自动为每条日志消息附加一些文本

时间:2011-09-13 10:13:50

标签: python logging

我正在处理的应用程序使用日志记录模块来记录错误等。在这种情况下,能够在日志条目中包含HTTP referer,GET / POST参数等会很好。

虽然可以在调用.error()等之前将其附加到消息中,但我正在寻找一种方法在中心位置执行此操作(当然不包括这些功能)。

2 个答案:

答案 0 :(得分:1)

我从未尝试过,但我认为你可以通过FORMAT指定logging.basicConfig来实现。

来自logging文档:

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

会打印出类似的内容:

     

2006-02-08 22:20:02,165 192.168.0.1 fbloggs协议问题:连接重置

答案 1 :(得分:0)

我现在使用自定义格式化程序解决了它:

class IndicoMailFormatter(logging.Formatter):
    def format(self, record):
        s = super(IndicoMailFormatter, self).format(record)
        return s + self._getRequestInfo()

    def _getRequestInfo(self):
        info = ['Additional information:']
        # ...
        return '\n\n%s' % '\n'.join(info)

可以使用logging.conf中的class选项(或通过python代码)轻松设置此格式化程序。