python logging使用

定义一个MyLogger类,通过这个类可以多个py文件调用共同输出log到文件和屏幕

完整代码:

class MyLogger:
    def __init__(self, name):
        self.logger = logging.getLogger(name)
        # 设置输出等级
        self.logger.setLevel(logging.DEBUG)
        # 输出格式
        self._format_ = '%(asctime)s   %(name)s   [%(levelname)s]   %(lineno)d - %(module)s :   %(message)s'
        self.level = logging.DEBUG
        self.dateformat = '%Y/%m/%d %H:%M:%S'
        # 文件路径
        if "linux" in sys.platform:
            self.filename = '/root/xmu_report/output.log'
        else:
            self.filename = './output.log'

        # 新建一个handler按时保存
        # W0每周一分隔文件 最大文件数量5
        log_file_handler = logging.handlers.TimedRotatingFileHandler(filename=self.filename, when="W0", interval=1, backupCount=5)
        log_file_handler.setFormatter(logging.Formatter(self._format_))
        log_file_handler.setLevel(logging.DEBUG)

        # 这个handler输出log到控制台
        stream_handler = logging.StreamHandler()
        stream_handler.setLevel(logging.DEBUG)
        stream_handler.setFormatter(logging.Formatter(self._format_))

        self.logger.addHandler(log_file_handler)
        self.logger.addHandler(stream_handler)

    def getLogger(self):
        return self.logger

调用:

if __name__ == '__main__':
    logger = MyLogger(__name__).getLogger()

    logger.info('test')
    logger.warning('test')
    logger.error('test')

输出:

 2021-04-29 11:07:40,492   main   [INFO]   33 - mylogger :   test
 2021-04-29 11:07:40,493   main   [WARNING]   34 - mylogger :   test
 2021-04-29 11:07:40,493   main   [ERROR]   35 - mylogger :   test

logging日志输出等级

级别数值
CRITICAL50
ERROR40
WARNING30
INFO20
DEBUG10
NOTSET0
moller
moller
文章: 18

留下评论

您的电子邮箱地址不会被公开。 必填项已用*标注