一、logging模塊級別及常用函數
默認的level是logging.Warning,低于該級別的就不輸出了。級別排序:Critical> Error > Warning > Info > Debug
Logging.Formatter:配置日志的格式,在里面自定義設置日期和時間,輸出日志的時候將會按照設置的格式顯示內容。
Logging.Logger:為程序提供記錄日志的接口;判斷日志所處級別,并判斷是否要過濾;根據其日志級別將該條日志分發給不同handler
addHandler():添加一個Handler
removeHandler():刪除一個Handler
addFilter():添加一個Filter,過濾作用
setLevel():設置級別
setFormatter():設置Formatter
Logging.Handler:Handler基于日志級別對日志進行分發,如設置為WARNING級別的Handler只會處理WARNING及以上級別的日志。
logging.basicConfig: 配置日志級別和日志內容輸出格式
help(logging.Formatter):
%(name)s????????????????? ?Logger的名字
%(levelno)s??????????????? 打印日志級別的數值
%(levelname)s?????????? 打印日志級別的名稱
%(pathname)s??????????? 打印當前執行程序路徑,相當于sys.argv[0]
%(filename)s????????????? 打印當前執行程序名
%(module)s??????????????? 調用日志輸出函數的模塊名
%(lineno)d????????????????? 打印日志的當前行號
%(funcName)s???????????打印日志的當前函數
?%(created)f??????????????? 當前時間,用UNIX標準的表示時間的浮點數表示
%(asctime)s??????????????? 打印日志創建時間
?%(msecs)d????????????????? Millisecond portion of the creation time
%(relativeCreated)d??? 輸出日志信息時的,自Logger創建以來的毫秒數
%(thread)d????????????????? 打印線程ID
?%(threadName)s????????打印線程名稱
%(process)d????????????????打印日志進程ID
?%(message)s????????????? 打印日志信息
二、日志輸出
1 import logging 2 import os.path 3 import time 4 5 6 logger = logging.getLogger() # 創建一個logger 7 logger.setLevel(logging.INFO) # Log等級總開關 8 9 # 創建一個handler,用于輸出日志到console,若只需輸出到文件,此兩行代碼去掉 10 ch = logging.StreamHandler() 11 ch.setLevel(logging.WARNING) # 輸出到console的log等級的開關 12 13 # 創建一個handler,用于寫入日志文件,若只需輸出到console,此六行代碼去掉 14 rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) 15 log_path = os.path.dirname(__file__) + '/Logs/' 16 log_name = log_path + rq + '.log' 17 logfile = log_name 18 fh = logging.FileHandler(logfile, mode='w') 19 fh.setLevel(logging.DEBUG) # 輸出到file的log等級的開關 20 21 # 定義handler的輸出格式 22 ch.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需輸出到文件,此行代碼去掉
23 fh.setFormatter(logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")) # 若只需輸出到console,此行代碼去掉
24 25 # 將logger添加到handler里面 26 logger.addHandler(ch) ?# 若只需輸出到文件,此行代碼去掉 27 logger.addHandler(fh) # 若只需輸出到console,此行代碼去掉 28 29 # 日志內容 30 logger.debug('Debug message') 31 logger.info('Info message') 32 logger.warning('Warning message') 33 logger.error('Error message') 34 logger.critical('Critical message')