我想用我的Django项目的日志添加请求和用户ID。我在互联网上找到的方式需要我发送额外的请求与每个记录器调用,
logger.info('This is my info log line', extras={ 'request', request }
)
但我不想要修改每个现有的记录器调用。是否可以使用处理程序/格式化程序?
答案 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)