Log4j2 每个用户会话一个文件



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

你会选择哪种方式来做这样的事情?简而言之,我想暂时得到这个结果:

  • 用户未登录 ->文件名=调试.log
  • 用户登录 ->文件名=[用户名]_debug.log

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

已解决的问题和经验教训:

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

相关内容

最新更新