python loggin模組封裝
阿新 • • 發佈:2021-06-24
#!/usr/bin/env python # -*- coding:utf-8 -*- import logging import time from util import get_path class TestLog(object): ''' 封裝後的logging ''' def __init__(self, logger=None): ''' 指定儲存日誌的檔案路徑,日誌級別,以及呼叫檔案 將日誌存入到指定的檔案中 ''' # 建立一個logger self.logger = logging.getLogger(logger) self.logger.setLevel(logging.DEBUG)# 建立一個handler,用於寫入日誌檔案 # self.log_time = time.strftime("%Y_%m_%d_") # self.log_path = get_path.log_file_path self.log_name = get_path.log_file_path fh = logging.FileHandler(self.log_name, encoding='utf-8') # 追加模式 這個是python2的 # fh = logging.FileHandler(self.log_name, 'a', encoding='utf-8') # 這個是python3的fh.setLevel(logging.INFO) # 再建立一個handler,用於輸出到控制檯 ch = logging.StreamHandler() ch.setLevel(logging.INFO) # 定義handler的輸出格式 formatter = logging.Formatter( '[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]: %(message)s') fh.setFormatter(formatter) ch.setFormatter(formatter) # 給logger新增handler self.logger.addHandler(fh) self.logger.addHandler(ch) # 新增下面一句,在記錄日誌之後移除控制代碼 # self.logger.removeHandler(ch) # self.logger.removeHandler(fh) # 關閉開啟的檔案 fh.close() ch.close() def getlog(self): return self.logger if __name__ == '__main__': log = TestLog().getlog() # 放在class上面 log.info("log message")