python logging 同时屏幕输出和保存到文件

2020-03-24  本文已影响0人  打出了枫采

日志记录,不同模块使用不同logger分开记录,同时输出到屏幕和文件
日志记录完后,可以使用del 来主动释放日志占用的资源

# -*- coding: utf-8 -*-
import logging
import time

class AppLogger:
    def __init__(self, moduleName, logfile):
        self._logger = logging.getLogger(moduleName)
        handler = logging.FileHandler(logfile)
        fmt = "%(asctime)-15s %(levelname)s %(filename)s %(lineno)d %(message)s"
        formatter = logging.Formatter(fmt)
        handler.setFormatter(formatter)
        self._logger.addHandler(handler)
        self._logger.setLevel(logging.INFO)

        console = logging.StreamHandler()
        console.setLevel(logging.INFO)
        console.setFormatter(formatter)
        self._logger.addHandler(console)
        
        self.warnning = self._logger.warnning
        self.error = self._logger.error
        self.info = self._logger.info
        self.debug = self._logger.debug

if __name__ == "__main__":
    moduleA_logfile = "moduleA-" + time.strftime("%Y%m%d%H%M%S") + '.log'
    moduleB_logfile = "moduleB-" + time.strftime("%Y%m%d%H%M%S") + '.log'

    moduleALogger = AppLogger("moduleA", moduleA_logfile)
    moduleBLogger = AppLogger("moduleB", moduleB_logfile)
    moduleALogger.info(" start xxxx")
    moduleBLogger.error("test error")
    ...
    ...
    del moduleALogger
    del moduleBLogger

上一篇下一篇

猜你喜欢

热点阅读