如何在不修改记录器调用的情况下在Django日志中添加请求ID?

时间:2015-06-28 13:23:14

标签: python django python-2.7 logging

我想用我的Django项目的日志添加请求和用户ID。我在互联网上找到的方式需要我发送额外的请求与每个记录器调用,

logger.info('This is my info log line', extras={ 'request', request }

但我想要修改每个现有的记录器调用。是否可以使用处理程序/格式化程序?

1 个答案:

答案 0 :(得分:1)

如果请求在一个记录器中是常量,则可以使用自定义过滤器来归档此目标:

import logging
class CustomFilter(logging.Filter):
    def __init__(self, request):
        self.request = request
    def filter(self, record):
        record.request = self.request
        return True

然后将%(request)s添加到您的格式化程序中,并将CustomFilter添加到记录器的过滤器中:

logger.addFilter(CustomFilter(CONSTANT_REQUEST))
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(logging.Formatter('%(request)s %(levelname)s %(message)s'))
logger.addHandler(handler)