关于 logging 的一些琐事

422 查看

虽说 logging 模块都用了好久了,不过由于文档不够详细,每次都忍不住去搜索别人的文章,于是就干脆记录下来吧。

懒得分段了,想到哪写到哪吧。

  1. 为什么 logging.info() 默认不输出任何东西?
    因为默认生成的 root logger 的 level 是 logging.WARNING,低于该级别的就不输出了。可以进行如下设置来输出: 

    如果还没配置 handler 的话,可以用 logging.basicConfig() 来配置:

     
  2. 如何定制输出的格式?
    给 logger 的 handler 设置一个 logging.Formatter 对象: 

    如果还没配置 handler 的话,可以用 logging.basicConfig() 来配置:

    详细的格式介绍就查看文档吧。
  3. 为什么我重定向了 stdout,但是却看不到输出?
    因为默认生成的 root logger 的 handler 的 stream 是 stderr,不是 stdout: 

    可以如下分别配置: