import logging from logging import handlers class Logger(object): level_relations = { 'debug': logging.DEBUG, 'info': logging.INFO, 'warning': logging.WARNING, 'error': logging.ERROR, 'crit': logging.CRITICAL } # 日志級別關系映射 def __init__(self, filename, level='info', when='W', backCount=3, fmt='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'): 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=backCount, encoding='utf-8') # 往文件里寫入#指定間隔時間自動生成文件的處理器
#實例化TimedRotatingFileHandler #interval是時間間隔,backupCount是備份文件的個數,如果超過這個個數,就會自動刪除,when是間隔的時間單位,單位有以下幾種: # S 秒 # M 分 # H 小時、 # D 天、 # W 每星期(interval==0時代表星期一) # midnight 每天凌晨
th.setFormatter(format_str) # 設置文件里寫入的格式 self.logger.addHandler(sh) # 把對象加到logger里 self.logger.addHandler(th)
if __name__ == '__main__':
log = Logger('info.log', level='info')
log.logger.info('11111')
參考鏈接:https://blog.csdn.net/albertfly/article/details/80931623