logging模块

引言

此篇仅是个人对logging模块的学习记录,具体请详见
https://docs.python.org/zh-cn/3/library/logging.htmlighlight=logging#logging.basicConfig

logging 模块概念

日志(logging)是对软件执行时所发生事件的一种追踪方式。软件开发人员对他们的代码添加日志调用,借此来指示某事件的发生。一个事件通过一些包含变量数据的描述信息来描述(比如:每个事件发生时的数据都是不同的)。开发者还会区分事件的重要性,重要性也被称为 等级 或 严重性

什么时候使用日志

你想要执行的任务 此任务的最好的工具
在对程序的普通操作发生时提交事件 告(比如:状态监控和错误调查) logging.info() 函数(当有诊断目的需要详细输出信息时使用 logging.debug() 函数)
提出一个警告信息基于一个特殊的运行时事件 warnings.warn() 位于代码库中,该事件是可以避免的,需要修改客户端应用以消除告警 logging.warning() 不需要修改客户端应用,但是该事件还是需要引起关注
对一个特殊的运行时事件 告错误 引发异常
告错误而不引发异常(如在长时间运行中的服务端进程的错误处理) logging.error(), logging.exception() 或logging.critical() 分别适用于特定的错误及应用领域

日志级别

级别 何时使用
DEBUG 细节信息,仅当诊断问题时适用
INFO 确认程序按预期运行
WARNING 表明有已经或即将发生的意外(例如:磁盘空间不足),程序仍按预期进行
ERROR 由于严重的问题,程序的某些功能已经不能正常执行
CRITICAL 严重的错误,表明程序已不能继续执行

日志中的四类组件

日志库采用模块化方法,并提供几类组件:记录器、处理程序、过滤器和格式化程序。

  • 记录器暴露了应用程序代码直接使用的接口。
  • 处理程序将日志记录(由记录器创建)发送到适当的目标。
  • 过滤器提供了更精细的附加功能,用于确定要输出的日志记录。
  • 格式化程序指定最终输出中日志记录的样式。

日志事件信息在 LogRecord 实例中的记录器、处理程序、过滤器和格式化程序之间传递。

在命名记录器时使用的一个好习惯是在每个使用日志记录的模块中使用模块级记录器,命名如下:

这意味着记录器名称跟踪包或模块的层次结构,并且直观地从记录器名称显示记录事件的位置。
例如:

控制台输出:

添加参数:
控制台输出:

常用的接口和参数

  • logging.basicConfig
参数 描述
filename 记录日志的文件,如果没有指定,则默认在控制台打印日志信息
filemode 打开文件的mode,例如:‘w’, ‘r’, ‘a’
format 处理器使用的指定格式字符串, 例如:’%(message)s:%(asctime)s’
datefmt 显示的日期格式,例如:’%m/%d/%Y %I:%M:%S %p’
level 记录器的级别, 例如:logging.INFO, logging.DEBUG

对 basicConfig() 的调用应该在 debug() , info() 等的前面。因为它被设计为一次性的配置,只有第一次调用会进行操作,随后的调用不会产生有效操作。

后续用到其他接口还会继续补充

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

上一篇 2021年1月7日
下一篇 2021年1月7日

相关推荐