在Python日志记录中仅使用属性而不是消息创建记录

时间:2019-01-04 16:12:23

标签: python logging

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

据我了解,logger.infologger.debug之类的方法只是用于在特定级别创建日志记录的方法。这些方法称为self._log方法,其本身称为self.makeRecord方法。

如果我想创建消息属性为none的记录,是否可以调用logger.makeRecord,将None传递给message并将属性字典传递给extra关键字参数?还是我应该打电话给self._log并传递这些参数?还是这些都不起作用?我是否也可以只将extra传递给logger.info方法?

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

很抱歉这篇文章有这么多迷你问题。

1 个答案:

答案 0 :(得分:0)

为什么不能格式化日志字符串以使用这些额外的参数? position = torch.arange(0.0, max_len).unsqueeze(1) div_term = torch.exp(torch.arange(0.0, d_model, 2) * -(math.log(10000.0) / d_model)) kwarg明确为此目的。来自他们的docs

extra

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 用于kwarg映射,因此,如果您希望它为您构建字符串,则可以。 “消息”是有位置的,因此不能忽略它。但是,没有什么可以阻止您提供空字符串extra作为''位置arg