Py学习  »  Python

在python日志中创建只包含属性而不包含消息的记录

matt_js • 5 年前 • 1678 次点击  

有没有一种简单的方法可以在python中创建一个日志记录,而不是发送一条消息,只发送一个属性列表?

据我所知,这种方法 logger.info logger.debug 只是在特定级别创建日志记录的方法。这些方法调用 self._log 方法,它本身调用 self.makeRecord 方法。

如果我想创建没有消息属性的记录,我可以直接调用 logger.makeRecord 通过 None 消息和属性字典 extra 关键字参数?或者我应该打电话 自我日志 把这些论点传出去?或者这些都不起作用?我能不能只是通过 额外的 信息记录器 方法呢?

另外,如果这是可能的,为什么不经常这样做呢?似乎理想的工作流只将属性传递到日志记录中,然后由格式化程序在之后编译消息。

很抱歉在这篇文章里有这么多小问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43918
 
1678 次点击  
文章 [ 1 ]  |  最新文章 5 年前
C.Nivs
Reply   •   1 楼
C.Nivs    6 年前

为什么不能格式化你的日志字符串来获取额外的ARG?这个 extra Kwarg就是为了这个目的。从他们 docs :

FORMAT = '%(asctime)-15s %(clientip)s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
d = {'clientip': '192.168.0.1', 'user': 'fbloggs'}
logger = logging.getLogger('tcpserver')
logger.warning('Protocol problem: %s', 'connection reset', extra=d)

# which prints this
2006-02-08 22:20:02,165 192.168.0.1 fbloggs  Protocol problem: connection reset

额外的 是用于KWG映射,所以如果你想它为你构建一个字符串,它可以。“消息”是位置的,因此不能忽略它。但是,没有什么可以阻止您提供空字符串 '' 作为 message 位置参数