logger的Level

logger.setLevel()

设置logger的level,level有以下几个级别 NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL 如果把looger的级别设置为INFO, 那么小于INFO级别的日志都不输出, 大于等于INFO级别的日志都输出

logger的处理器

logger.addHandler()

logger可以雇佣handler来帮它处理日志, handler主要有以下几种:

  • StreamHandler: 输出到控制台
  • FileHandler: 输出到文件

handler还可以设置自己的level以及输出格式。

将logger封装起来方便使用

这个logger类具有控制台,文件同时输出的功能,使用方法如下

import logging

class MyLogging:
    def __init__(self, loggerName = 'mylog', fileName = 'log.txt'):
        self.logger = logging.getLogger(loggerName)  
        self.logger.setLevel(logging.DEBUG)         
        # 创建一个handler,用于写入日志文件  
        fh = logging.FileHandler(fileName)  
        fh.setLevel(logging.DEBUG)  
        # 再创建一个handler,用于输出到控制台  
        ch = logging.StreamHandler()  
        ch.setLevel(logging.DEBUG)          
        # 定义handler的输出格式  
        formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
        fh.setFormatter(formatter)  
        ch.setFormatter(formatter)          
        # 给logger添加handler  
        self.logger.addHandler(fh)  
        self.logger.addHandler(ch) 
if __name__ == '__main__':
    logger = MyLogger('hello_log', 'main.log').logger
    logger.info('info message')
    logger.debug('debug message')
    logger.warning('warning message')
    logger.critical('critical message')

Comments

comments powered by Disqus