Python日志与线程本地变量

2 投票
1 回答
1592 浏览
提问于 2025-04-18 03:07

我想在所有的网页应用日志前面加上用户的邮箱。

我可以把邮箱(从 cookie 里获取的)存储在 threading.local() 里。但是我不能总是确保这个变量会在线程的本地存储中。

有没有办法让我应用里的所有日志记录器都这样做呢?

1 个回答

1

你可以创建一个 logging.Filter() 对象,这个对象可以获取线程本地的变量(如果没有的话就用一个合适的默认值),并把它添加到日志记录中。然后把这个过滤器附加到根日志记录器上,这样在所有日志记录被发送到处理器之前,它都会被调用。一旦这个变量被放进日志记录里,你就可以在用来显示或保存信息的格式化器中使用它。

撰写回答