1. 程式人生 > 實用技巧 >python中日誌輸出重複的解決辦法

python中日誌輸出重複的解決辦法

#coding:utf-8
import logging
def log():
    #建立logger,如果引數為空則返回root logger
    logger = logging.getLogger()  #定義一個logger(日誌器提供應用程式提供介面)
    logger.setLevel(logging.ERROR )  #設定logger日誌等級
        
    # 判斷logger是否已經新增過handler,是則直接返回logger物件,否則執行handler設定以及addHandler(ch)
    if not logger.handlers:
        
#建立handler(日誌處理器)將logger建立的日誌按照自身定義的formatter格式輸出到指定地方 fh = logging.FileHandler("D:\\workspace\\thinksns\\result\\log\\test.log",encoding="utf-8") #將日誌訊息傳送到磁碟檔案,預設情況下檔案大小會無限增長 ch = logging.StreamHandler() #將日誌訊息傳送到輸出到Stream,如std.out, std.err或任何file-like物件。 #設定輸出日誌格式 formatter = logging.Formatter( fmt
="%(asctime)s %(levelname)s %(filename)s%(funcName)s %(message)s", #指定訊息格式化字串,如果不指定該引數則預設使用message的原始值 datefmt="%Y/%m/%d %X" #指定日期格式字串,如果不指定該引數則預設使用"%Y-%m-%d %H:%M:%S" ) #將formatter定義的格式載入到handler fh.setFormatter(formatter) ch.setFormatter(formatter)
#為logger新增的日誌處理器, logger.addHandler(fh) logger.addHandler(ch) return logger

如果去掉if not logger.handlers:語句,我們日誌將會重複輸出2次,所以在日誌使用前,加以判斷有就直接返回logger,沒有就建立後返回