zoukankan      html  css  js  c++  java
  • python logging 日志

    loggingprint 区别,为什么需要logging

    在写脚本的过程中,为了调试程序,我们往往会写很多print打印输出以便用于验证,验证正确后往往会注释掉,一旦验证的地方比较多,再一一注释比较麻烦,这样logging就应运而生了,直接把验证信息存在一个文件中(例如在logging.basicConfig(里面设置filename= 'employee.log',or直接打印出出来,不用设置finame,就会直接打印在cmd窗口中。

       

       

    简单将日志打印到屏幕:

       

    import logging

    logging.debug('debug message')

    logging.info('info message')

    logging.warning('warning message')

    logging.error('error message')

    logging.critical('critical message')

    输出:

    WARNING:root:warning message

    ERROR:root:error message

    CRITICAL:root:critical message

    可见,默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。

       

    上面说的basicConfig方法可以满足你在绝大多数场景下的使用需求,但是basicConfig有一个 很大的缺点。

    调用basicConfig其实是给root logger添加了一个handler,这样当你的程序和别的使用了 logging的第三方模块一起工作时,会影响第三方模块的logger行为。这是由logger的继承特性决定的。

    所以我们需要使用真正的logger

    代码如下:

    import logging

    # 使用一个名字为fiblogger

    logger = logging.getLogger('fib')

    # 设置loggerlevelDEBUG

    logger.setLevel(logging.DEBUG)

    # 创建一个输出日志到控制台的StreamHandler

    hdr = logging.StreamHandler()

    formatter = logging.Formatter('[%(asctime)s] %(name)s:%(levelname)s: %(message)s')

    hdr.setFormatter(formatter)

    # logger添加上handler

    logger.addHandler(hdr)

    这样再使用logger来进行日志输出就行了。不过这样的坏处就是代码量比basicConfig要大不少。 所以我建议如果是非常简单的小脚本的话,直接使用basicConfig就可以,如果是稍微大一些 项目,建议认真配置好logger

  • 相关阅读:
    11 2
    10 29
    10 22
    dp的本质
    笛卡尔树小结
    Gitlab 备份迁移恢复报错gtar: .: Cannot mkdir: No such file or directory
    升级Jenkins版本
    当linux中的所有指令突然不能使用的时候
    合并范围
    每股收益列报计算
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/10243564.html
Copyright © 2011-2022 走看看