根据环境定义不同的log4j2.xml配置

时间:2013-09-08 01:24:03

标签: java logging configuration log4j2 environment

我想在我的网络应用程序中尝试使用logj 2。使用log4j 1.x,我们根据环境设置不同的配置文件,并使用ServletContextListener使用类似

的调用加载适当的配置
  

DOMConfigurator.configureAndWatch(logConfigFile,delay);

传递配置文件位置。

我计划对log4j2配置文件执行相同的操作但是根据thisthis,不可能或不建议将DOMConfigurator与log4j2一起使用。

所以,我的问题是:如何使用基于环境的不同配置文件和log4j 2?

3 个答案:

答案 0 :(得分:1)

拥有多个配置文件需要实现什么目标?我猜你想为每个Web应用程序分别创建日志文件。

您可以实现此目的的一种方法是使用RoutingAppender;这可以根据ThreadContextMap中设置的键/值将日志事件委托给其他appender。有些人使用他们的网络应用程序名称作为要打开的值。

Beta-9(GA之前的最后一个测试版)将很快发布,它将有更好的文档将log4j2与web应用程序一起使用(FAQ将有一个详细的RoutingAppender示例)。

这会回答你的问题吗?

答案 1 :(得分:0)

感谢Remko Popma,我发布了这个问题并从log4j用户邮件列表中得到了答案。可以使用带有'log4jconfiguration'context-param的System属性或环境变量来在运行时动态设置配置文件

答案 2 :(得分:0)

如果您在Servlet 3.x容器中,我建议您使用log4j2建议的方法,将log4j-web jar添加到正在使用的其他容器中,并按照log4j2 usage manual中的说明设置上下文参数。网络应用程序。