1. 程式人生 > >logging模塊小知識--同時往不同文件寫日誌

logging模塊小知識--同時往不同文件寫日誌

set message 文件中 .get and sage name veh ger

當定義一個寫log的函數後,用logging多次調用該函數寫不同文件的日誌時,會出現只往一個文件中寫日誌。

因為logger會一直打開一個日誌handler,再次調用時,該handler仍是打開的,所以只往該handler寫日誌,所以要解決該問題,必須在每次寫完日誌後,將該handler關閉。

def write_logger(log_params,info):
‘‘‘
實現寫日誌,傳入2個參數
‘‘‘
logger = logging.getLogger(‘ATM_LOG‘) #獲取一個名為ATM.log的logger
logger.setLevel(logging.DEBUG) #設置日誌等級為DEBUG
log_path = log_handler(log_params) #獲取日誌的路徑
log_file = ‘%s.log‘ % (log_path)     #獲取日誌的文件名
fh = logging.FileHandler(log_file)    #定義一個寫文件的handler
fh.setLevel(logging.DEBUG)         #設置寫文件的等級
fh_formatter = logging.Formatter(‘%(asctime)s %(levelname)s:%(message)s‘)    #設置輸出格式
fh.setFormatter(fh_formatter)    #將輸出格式設置給handler
logger.addHandler(fh)         #將handler加入logger
logger.debug(info)           #寫日誌
logger.removeHandler(fh)       #刪除handler

到此,每次調用函數的時候都會創建一個新的handler,不會再往一個文件中寫

logging模塊小知識--同時往不同文件寫日誌