内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
假设我想像这个格式化字符串那样进行日志记录:
%(levelname)s %(asctime)s %(module)s %(funcName)s %(message)s %(user_id)
可以使用这种类型的日志记录命令来完成:
logging.error('Error fetching information', extra = { 'user_id': 22 } )
这将将当前用户ID添加到当前请求的日志消息中。
但是,需要在每个日志记录调用中添加额外的dict。
在Django中的公共函数(例如中间件或视图的索引函数)中是否有一个好的方法来添加这个上下文,以便设置带有用户id的额外字典,并且当前请求中的所有进一步的日志记录调用都会记录当前用户。
https://github.com/jedie/django-tools/blob/master/django_tools/middlewares/ThreadLocal.py
需要做的是将中间件添加到MIDDLEWARE_CLASSES设置,并在如下位置创建一个函数:
from django_tools.middlewares import ThreadLocal def log_something(levelname, module, funcname, message): user = ThreadLocal.get_current_user() # do your logging here. "user" is the user object and the user id is in user.pk