我想在我的网络应用程序中尝试使用logj 2。使用log4j 1.x,我们根据环境设置不同的配置文件,并使用ServletContextListener使用类似
的调用加载适当的配置DOMConfigurator.configureAndWatch(logConfigFile,delay);
传递配置文件位置。
我计划对log4j2配置文件执行相同的操作但是根据this和this,不可能或不建议将DOMConfigurator与log4j2一起使用。
所以,我的问题是:如何使用基于环境的不同配置文件和log4j 2?
答案 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中的说明设置上下文参数。网络应用程序。