1. 程式人生 > 其它 >python loggin模組封裝

python loggin模組封裝

#!/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")