美文网首页
logging模块

logging模块

作者: 一斤杨梅三两小虫 | 来源:发表于2016-06-20 10:16 被阅读0次

    logging模块主要有以下几个对象

    • logger对象
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)  //默认是ERROR级别,所以INFO和DEBUG是打不出来的
    
    • handler对象
    fh = logging.FileHandler('/tmp/test.log')
    ch = logging.StreamHandler()
    
    • formatter对象
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
    • filter对象

    目前用不到,暂时忽略

    几个对象之间的关系

    • 在handler对象中设置格式(由formatter对象决定)
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    
    • 在logger对象中设置输出位置(由handler对象决定)
    logger.addHandler(fh)
    logger.addHandler(ch)
    

    总结

    定义formatter——决定输出格式
    定义handler——决定输出位置
    定义logger——最终程序调用的日志接口

    将formatter绑定到handler上;再将handler绑定至logger上
    这样就可以使用logger对象进行输出日志了。如:logger.info('test')

    可以直接使用以下的配置文件

    [loggers]
    keys = root
      
    [handlers]
    keys = console, info, error
    
    [formatters]
    keys = baseFormatter
    
    [logger_root]
    level = NOTSET
    handlers = console, info, error
    propagate = 0
    
    [handler_console]
    level = NOTSET
    class = StreamHandler
    formatter = baseFormatter
    args = (sys.stdout,)
    
    [handler_info]
    level = INFO
    class = handlers.TimedRotatingFileHandler
    formatter = baseFormatter
    args = ('./log/info.log', 'midnight', 1)
    
    [handler_error]
    level = ERROR
    class = handlers.TimedRotatingFileHandler
    formatter = baseFormatter
    args = ('./log/error.log', 'midnight', 1)
    
    [formatter_baseFormatter]
    format = %(asctime)s %(levelname)s %(message)s
    

    使用方法如下

    import logging
    import logging.config
    
    logging.config.fileConfig('/Users/sgrchan/Downloads/logging.ini')
    logger = logging.getLogger()
    
    logger.info('test')
    

    相关文章

      网友评论

          本文标题:logging模块

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