zoukankan      html  css  js  c++  java
  • Python内置logging模块

    最近调试Python代码比较多,发现logging模块很好用。

    我的用法如下:

    import logging
    
    logging.basicConfig(level=logging.INFO, 
    format='%(asctime)s - %(filename)s [line: %(lineno)d] - %(message)s')
    #logging.disable(logging.CRITICAL)
    
    logging.info('your message')
    

     需要取消注释时去掉代码中的#即可。

    2018.11.2 添加

    这几天发现一个设置logger后重复打印的问题。

    代码如下:

    import logging
    
    logging.basicConfig()
    logging.error('123')
    logger = logging.getLogger('x')
    hdlr = logging.StreamHandler()
    hdlr.setLevel(20)
    logger.addHandler(hdlr)
    logger.setLevel(20)
    logger.info('123')
    

     输出:

    ERROR:root:123
    123
    INFO:x:123
    

     查了查,发现原因是:

    可以通过官网查到。

    即:propagate为True的情况下,子logger会将message发送到上级logger的handler,不管上级logger的level的大小,只考虑该handler的level。

    (Messages are passed directly to the ancestor loggers’ handlers - neither the level nor filters of the ancestor loggers in question are considered.)

    对应代码为:

            while c:
                for hdlr in c.handlers:
                    found = found + 1
                    if record.levelno >= hdlr.level:
                        hdlr.handle(record)
                if not c.propagate:
                    c = None    #break out
                else:
                    c = c.parent
    

      

  • 相关阅读:
    3里氏代换原则LSP
    2单一职责原则SRP
    1开放封闭原则OCP
    24访问者模式Visitor
    python json模块,处理json文件的读写
    python zip 绑定多个list
    python 字符串重复多次的技巧 *操作符
    python 刷新缓冲区,实时监测
    python os.getcwd 获取工作目录
    python datetime 获取时间
  • 原文地址:https://www.cnblogs.com/lyg-blog/p/8969913.html
Copyright © 2011-2022 走看看