Log4j2 每个用户会话一个文件

Log4j2 one file per user session

在我的 vaadin 应用程序中,我想为每个用户会话创建一个日志文件。我开始创建一个客户文件附加程序,但随后决定对 ThreadContexts 进行更多调查。我现在将用户的 uid 存储在 ThreadContext 中,这在我的 PatternLayout (%X{uid}) 中工作正常,但不幸的是不在 FileAppender 中(也许我有点天真)。

对于这样的事情,你会选择哪种方式?简单的说,我想暂时得到这个结果:

非常感谢任何想法或指示!

问题解决和经验教训:

  • 要写入不同的日志文件,我需要路由器,如 FAQ 中所述。不知道为什么我在谷歌搜索时没有遇到这个问题。
  • 不需要自定义 appender 来解决这个问题。
  • Log4j2 对目录不可写非常非常挑剔。如果发生这种情况,请向上滚动堆栈跟踪:ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender。你会找到罪魁祸首,google 不会。
  • 此外,Log4j2 关心附加程序出现的顺序。它在 FAQ 和 appender 文档中多次说明,但我仍然多次阅读它。