Logbook:Python 快速日志记录实践

作者:东东 yasking

来源:https://blog.yasking.org/a/python-logbook.html

Python 本身有logging日志记录模块,之前发现了logbook这个包,介绍说是替代logging,索性整理一下,方便之后使用

上边这是文档中给出的例子,它定义了许多的Handler,可以把日志记录到标准输出,文件,E-MAIL,甚至Twitter

StreamHandler

使用 记录的日志会以流输出,这里指定 也就是记录到标准输出,与 一样

(一)可以使用 来在一定作用域内记录日志

(二)也可以指定作用于整个应用

FileHandler

使用 可以把日志记录到文件,这也是最常见的方式

日志就写到了 文件

同时输出到文件与STDOUT

同时把记录输出到多个地方可以方便查阅和记录,初始化 的时候设置 参数就可以使得其它 也可以接收到记录

另外,通过 可以设置日志级别,级别如下,从下到上级别越来越高,如 设置为 , 则除了 外都会记录,设置不同的级别,搭配各种 可以让日志的记录更加灵活,上边使用的 可以使用不同的记录级别

MailHandler

和日志文件同样重要的就是 了,当出现了比较严重错误的时候就要发送邮寄进行通知

详细的文档见:

分别使用了 和 邮箱发送邮件测试,使用的邮箱需要开启SMTP权限,代码如下(163和qq发送参数稍有不同)

163 Mail

QQ Mail

内容 中的用大括号的会进行数值替换, 字段上边的``和下边需要空一行,这样解析参数收到的邮件才会正确的显示标题

Record Processors

上边发送邮件的例子,参数里面有一个 ,这个参数是可以自己指定的,比如编写WSGI的程序,处理URL,每一条记录都希望记录到访问者的IP,可以这样做:

使用自定义参数,需要重新设置 ,才能进行记录,record类可以在这里找到,详细参数见

Output:

日期格式

上边在介绍的自定义日志格式的时候使用的时间是虽然指定了格式但是是 格式,跟北京时间是差了8个小时的。所以需要设置让它记录本地的时间

在刚才的例子前面加上如下代码即可

更过日期格式化的设置参看:api/utilities -

threadbound与applicationbound

从最开始的例子来看,可以使用两种方式来记录日志,一种是在最开始使用 来激活,另一种是使用的时候用 构造上下文,现在进行一些补充

使用可以取消记录的上下文

application作用于整个应用,thread只针对当前线程

消除嵌套

使用多个Handler的时候,使用 方式启动的上下文不会形成嵌套,但是使用 启动的上下文会形成嵌套,可以使用

使用的时候就只需要一个 来启动

是个不错的包,记录日志灵活方便,比自己包装发送邮件方便了不少,整理了一些基本用法,还有不少值得学习的功能,暂时能用到的基本上就这么多,之后用到高级的功能再继续研究补充。

题图:pexels,CC0 授权。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180118A09PXR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券