Log4j2每个用户会话一个文件

时间:2017-11-10 16:41:24

标签: log4j2 appender vaadin8

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

你会选择这样的方式?简单地说,我想暂时得到这个结果:

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

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

1 个答案:

答案 0 :(得分:1)

问题解决了,经验教训:

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