Python Logging模块

作者: 四碗饭儿 | 来源:发表于2017-08-21 13:44 被阅读0次

    Bug是所有程序员的亲密伙伴,而Debug的最好方式莫过于在程序运行过程中保存明晰的日志。logging模块为Python程序员提供了书写代码运行日志的利器。

    事件的级别

    logging模块记录的日志信息包括以下级别

    levels of events
    默认情形下,logging模块只打印warning级别和以上级别的日志信息。

    日志基本配置

    logging模块的基本设置使用basicConfig

      import logging
      logging.basicConfig(filename='example.log', level=logging.DEBUG) # 日志配置应该放在所有日志行为的首位
      # logging.basicConfig(level=getattr(logging, 'DEBUG')) # 也可以直接使用字符串来指定日志级别
      # logging.basicConfig(filemode='w') #默认情形下日志文件会在原文件基础上续写,指定文件打开模式为‘w'则刷新文件
      # logging.basicConfig(format='%(levelname)s:%(message)s') # 指定日志信息的格式
      # logging.basicConfig(format='%(asctime)s:%(message)s') # 加入时间信息
      # logging.basicConfig(format='%(asctime)s:%(message)s', datefmt='%m/%d/%Y %I:%M:%S %p') # 指定时间信息格式
      logging.warning('is when this event was logged.')
      logging.debug('Debugging !')
      logging.info('Info !')
      logging.warining('Warn !')
    

    LogRecord

    logging模块中的成员包含:loggers,handlers,filters,formatters
    日志信息以LogRecord的形式在成员之间传递

    Logger

    每个Logger实例都有名字,名字自取可表示日志信息出处,用.组织成命名空间,通常可以使用模块名称作为Logger实例的名字

        logger = logging.getLogger(__name__)
        # logger的配置
        logger.setLevel() # 设置日志级别
        logger.addHandler() # 当前logger添加、删除Handler
        logger.removeHandler()
        logger.addFilter() # 当前logger添加、删除Filter
        # logger记录日志
        logger.debug()
        logger.info()
        logger.warning()
        logger.error()
    

    示例

    import logging
    
    # create logger
    logger = logging.getLogger('simple_example')
    logger.setLevel(logging.DEBUG)
    
    # create console handler and set level to debug
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    
    # create formatter
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
    # add formatter to ch
    ch.setFormatter(formatter)
    
    # add ch to logger
    logger.addHandler(ch)
    
    # 'application' code
    logger.debug('debug message')
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')
    

    Reference

    相关文章

      网友评论

        本文标题:Python Logging模块

        本文链接:https://www.haomeiwen.com/subject/nmqcdxtx.html