Logging是python自帶的模塊,這個模塊支持輸出不一樣級別的日誌,能夠輸出到控制檯和寫入文件,支持TCP、HTTP、GET/POST、SMTP、Socket等協議,將日誌信息發送到網絡等等。python
Logging提供5個等級的輸出,CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,若是把looger的級別設置爲INFO, 那麼小於INFO級別的日誌都不輸出, 大於等於INFO級別的日誌都輸出網絡
logging庫提供了多個組件:Logger、Handler、Filter、Formatter:函數
Logger 對象提供應用程序可直接使用的接口,供應用代碼使用;
Handler 發送日誌到適當的目的地;
Filter 提供了過濾日誌信息的方法,控制輸出;
Formatter 指定日誌輸出和顯示的具體格式。spa
#coding:utf-8 線程
# ======================================================================= debug
# FuncName: console_out.py 日誌
# Desc: output log to console and file orm
# Date: 2016-02-19 17:32 對象
# Author: johnny 接口
# =======================================================================
import logging
def console_out(logFilename):
''''' Output log to file and console '''
# Define a Handler and set a format which output to file
logging.basicConfig(
level = logging.DEBUG, # 定義輸出到文件的log級別,
format = '%(asctime)s %(filename)s : %(levelname)s %(message)s', # 定義輸出log的格式
datefmt = '%Y-%m-%d %A %H:%M:%S', # 時間
filename = logFilename, # log文件名
filemode = 'w') # 寫入模式「w」或「a」
# Define a Handler and set a format which output to console
console = logging.StreamHandler() # 定義console handler
console.setLevel(logging.INFO) # 定義該handler級別
formatter = logging.Formatter('%(asctime)s %(filename)s : %(levelname)s %(message)s') #定義該handler格式
console.setFormatter(formatter)
# Create an instance
logging.getLogger().addHandler(console) # 實例化添加handler
# Print information # 輸出日誌級別
logging.debug('logger debug message')
logging.info('logger info message')
logging.warning('logger warning message')
logging.error('logger error message')
logging.critical('logger critical message')
if __name__ == "__main__":
console_out('logging.log')
%(name)s |
Logger的名字 |
%(levelno)s |
數字形式的日誌級別 |
%(levelname)s |
文本形式的日誌級別 |
%(pathname)s |
調用日誌輸出函數的模塊的完整路徑名,可能沒有 |
%(filename)s |
調用日誌輸出函數的模塊的文件名 |
%(module)s |
調用日誌輸出函數的模塊名 |
%(funcName)s |
調用日誌輸出函數的函數名 |
%(lineno)d |
調用日誌輸出函數的語句所在的代碼行 |
%(created)f |
當前時間,用UNIX標準的表示時間的浮 點數表示 |
%(relativeCreated)d |
輸出日誌信息時的,自Logger建立以 來的毫秒數 |
%(asctime)s |
字符串形式的當前時間。默認格式是 「2003-07-08 16:49:45,896」。逗號後面的是毫秒 |
%(thread)d |
線程ID。可能沒有 |
%(threadName)s |
線程名。可能沒有 |
%(process)d |
進程ID。可能沒有 |
%(message)s |
用戶輸出的消息 |
python中時間日期格式化符號:
%y 兩位數的年份表示(00-99)
%Y 四位數的年份表示(000-9999)
%m 月份(01-12)
%d 月內中的一天(0-31)
%H 24小時制小時數(0-23)
%I 12小時制小時數(01-12)
%M 分鐘數(00=59)
%S 秒(00-59)
%a 本地簡化星期名稱
%A 本地完整星期名稱
%b 本地簡化的月份名稱
%B 本地完整的月份名稱
%c 本地相應的日期表示和時間表示
%j 年內的一天(001-366)
%p 本地A.M.或P.M.的等價符
%U 一年中的星期數(00-53)星期天爲星期的開始
%w 星期(0-6),星期天爲星期的開始
%W 一年中的星期數(00-53)星期一爲星期的開始
%x 本地相應的日期表示
%X 本地相應的時間表示
%Z 當前時區的名稱
%% %號自己
計算毫秒
#!/usr/bin/env python
#coding:utf-8
import datetime,time
print time.strftime('%Y-%m-%d %H:%M:%S'),datetime.datetime.now().strftime('%f')[:3]
print datetime.datetime.now().strftime('%Y%m%d %H:%M:%S.%f')