1. 程式人生 > 其它 >python--logging模組記錄日誌

python--logging模組記錄日誌

import logging
import os
from logging import handlers


class Logger(object):
    # 日誌級別關係對映
    level_relations = {
        'debug': logging.DEBUG,
        'info': logging.INFO,
        'warning': logging.WARNING,
        'error': logging.ERROR,
        'critical': logging.CRITICAL
    }

    def __init__
(self, filename, level='info', when='D', back_count=3, fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'): f_dir, f_name = os.path.split(filename) os.makedirs(f_dir, exist_ok
=True) # 當前目錄新建log資料夾 self.logger = logging.getLogger(filename) format_str = logging.Formatter(fmt) # 設定日誌格式 self.logger.setLevel(self.level_relations.get(level)) # 設定日誌級別 sh = logging.StreamHandler() # 往螢幕上輸出 sh.setFormatter(format_str) # 設定螢幕上顯示的格式 th = handlers.TimedRotatingFileHandler(filename=filename, when=when, backupCount=back_count, encoding
='utf-8') # 往檔案裡寫入指定間隔時間自動生成檔案的Handler # 例項化TimedRotatingFileHandler # interval是時間間隔,backupCount是備份檔案的個數,如果超過這個個數,就會自動刪除,when是間隔的時間單位,單位有以下幾種: # S 秒 # M 分 # H 小時 # D 天 # 'W0'-'W6' 每星期(interval=0時代表星期一:W0) # midnight 每天凌晨 th.setFormatter(format_str) # 設定檔案裡寫入的格式 self.logger.addHandler(sh) # 把物件加到logger裡 self.logger.addHandler(th) # 測試 if __name__ == '__main__': logger = Logger('./logs/2020/app.log', 'debug', 'S', 5).logger logger.debug('debug') logger.info('info') logger.warning('警告') logger.error('報錯') logger.critical('嚴重') # 單獨記錄error err_logger = Logger('./logs/2020/error.log', 'error', 'S', 3).logger err_logger.error('錯誤 error')