快速进行运行回溯、定位问题,Python logging模块基本用法介绍

在实际Python项目、工具部署时,不可能直接将所有的信息通过输出到控制台中。通常,我们会将这些信息记录到日志文件中,这样不仅方便我们查看程序运行时的情况,也可以在出现故障时根据运行时产生的日志快速回溯、定位问题。

logging 日志级别

Python 标准库 logging 用作记录日志,默认分为六种日志级别,NOTSET、DEBUG、INFO、WARNING、ERROR、CRITICAL。


logging 参数说明

logging 使用非常简单,使用 basicConfig() 方法就能满足基本的使用需要,如果方法没有传入参数,会根据默认的配置创建Logger 对象,默认的日志级别被设置为 WARNING,该函数可选的参数如下:

参数说明:

  • filename:日志输出到文件的文件名 。
  • filemode: 文件模式,r[+]、w[+]、a[+] 。
  • format: 日志输出的格式 。
  • datefat: 日志附带日期时间的格式 。
  • style: 格式占位符,默认为 “%” 和 “{}” 。
  • level:设置日志输出级别 。
  • stream: 定义输出流,用来初始化 StreamHandler 对象,不能 filename 参数一起使用,否则会ValueError 异常 。
  • handles: 定义处理器,用来创建 Handler 对象,不能和 filename 、stream 参数一起使用,否则也会抛出 ValueError 异常 。

  • 输出至屏幕上

    如下:


    输出至日志文件中

    其中 format 参数支持以下格式输出:

  • %(levelno)s:打印日志级别的数值
  • %(levelname)s:打印日志级别的名称
  • %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
  • %(filename)s:打印当前执行程序名
  • %(funcName)s:打印日志的当前函数
  • %(lineno)d:打印日志的当前行
  • %(asctime)s:打印日志的时间
  • %(thread)d:打印线程ID
  • %(threadName)s:打印线程名称
  • %(process)d:打印进程ID
  • %(message)s:打印日志信息
  • 如下实现将日志格式化输出至指定日志文件中。

    日志内容如下:

    若输出中文日志,通过handlers=[logging.FileHandler(filename, encoding=”utf-8″)] 参数避免中文乱码,如下

    日志文件内容如下:


    捕获程序异常

    我们可以通过logger.error(“Faild to open sklearn.txt from logger.error”,exc_info = True)捕获程序异常,输出至日志文件中,如下

    日志文件内容如下:

    也可以使用logger.exception(msg,args),它等同于logger.error(msg,exc_info = True,args),如下:

    日志文件内容如下:

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年6月22日
    下一篇 2019年6月23日

    相关推荐