在每个用户的日志文件中使用特定标签进行记录

Logging with specific label in log file for every user

我在 Java (JSP + Servlets) 中有 Web 应用程序并使用 log4j 1.2.17 进行日志记录。 当用户登录网站时,他会获取 ID。我想在带有 ID 前缀的日志文件中查看他的所有操作:

01.05.2015 11:12:30 INFO [Roy] - login correct

但我不想在每个调用方法中都传递 ID 以记录该方法中的事件。 我想把ID保存在某个地方,需要的时候拿走。

您可能想要的是 Mapped Diagnostic Context。这有效地为您提供了一堆 ThreadLocal 来将数据元素放入您可以稍后记录的内容中。

在java...

MDC.put('LOGIN_ID', 'Roy');

在您的日志模式中:

"%d %p [%X{LOGIN_ID}] %m