logging模块学习

901 查看

这个模块经常用, 由于用法比较复杂, 老是用一次忘一次. 今天写一篇学习笔记, 加深印象. refer to: python tutorial

各个level的说明(按等级高低排序):
levels 说明
DEBUG 用来诊断是否有bug的详细信息
INFO 确认程序按预想的执行
WARNING 提示有不期望的事情发生, 或者可能会引起某些未来的问题
ERROR 提示某些更严重的信息, 已经引起某些功能的丧失
CRITICAL 提示某些更严重的错误, 这些错误会导致程序不能往下执行
模块使用:
首先需要logging.basicConfig()来配置, 以下是参数说明:
  1. filename: 指定log文件存放位置.
  2. filemode: 与filename搭配使用. 如果赋值为'w', 执行生成的log会覆盖上次的文件.
  3. level: 指定log的等级. 比如赋值为logging.DEBUG, 则包括DEBUG以及比DEBUG更重要的等级. 默认的level值是logging.WARNING
  4. format: 需要对logRecord attributes引用. 引用方式为: %(attr)s
    logging.basicConfig(format='%(asctime)s %(message)s', ...)
  5. 如果format里使用了asctime, 那么datefmt参数可以配置时间显示方式:
    logging.basicConfig(format='%(asctime)s, datefmt='%m/%d/%Y %H:%M:%S')
其他用法:

可以在执行python文件时命令行指定level等级:

 --log=INFO

在python文件中获取:

numeric = getattr(logging, loglevel.upper(), None)
if not isinstance(numeric, int):
        raise ValueError('Invalid log level %s' % loglevel)
logging.basicConfig(level=numeric, ....)

还有很多高阶的用法, 一般用不到. 如果你感兴趣, 可参考: advanced usage of logging