refer
基本logging操作
有了loguru其实不太需要知道这些底层的了,仅仅有需要的时候改下,比如添加log_first(info,5)之类的功能
- 父模块和子模块的logging权限
- 当一个 logger 的 level 被设置为 NOTSET 时,如果有父 logger,会将 log 传递给父 logger 处理,只有在 logger 是 root logger 或 propagate 属性设置为 False 时,才会由自己处理
logging的多种handler种类(包括logging.handlers.RotatingFileHandler)
高级库
- 推荐
- 颜色的配置可以看看这个colored-glog
- 注意,人家说都写进stderr,tee是不是只关注stdout的内容…
- glog居然有检查宏么…可以试试2333 ( log.check_ge( expr )
实践
- 查看tensorflow的logging
>>> import tensorflow as tf >>> import logging >>> tfLog = logging.getLogger('tensorflow') >>> tfLog.propagate True >>> tfLog.handlers [<StreamHandler <stdout> (NOTSET)>]
- tensorflow的日志是logging模块的子模块(看来就是包装了下python自带的logging罢了)
- tfLog.handlers为stdout, 日志等级NOTSET的话就会传递给root logger去做 – 前提是子logger的propagate属性为True(验证了一下,这里就是True)-- 否则除了Warning等级的信息,不然都不会输出。
>>> from tensorflow.compat.v1.logging import set_verbosity,INFO >>> set_verbosity(INFO) >>> tfLog.handlers [<StreamHandler <stdout> (NOTSET)>]
- 将tf的日志等级设置为INFO,发现tfLog等级没变,可以大胆猜测这个日志等级设置函数应该设置的是root logger的等级了。
- 将tf的logging模块导入rotation日志中
直接看代码吧