logging模塊小知識--同時往不同文件寫日誌
阿新 • • 發佈:2017-10-22
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模塊小知識--同時往不同文件寫日誌