单个Apache服务器上具有Log4j日志文件的多个Web应用程序

0dxa2lsx  于 2023-01-26  发布在  Apache
关注(0)|答案(2)|浏览(142)

我在apache tomcat服务器上部署了多个WAR文件,每个WAR文件都包含各自的Log4j.properties文件(Log4j位于WEB-INF/Log4j.properties中)。
如果我正在部署app1.WAR,使用WEB-INF/classes/Log4j.properties在CATALINA-HOME/logs/app1.log中生成日志,并部署另一个app2.WAR,使用WEB-INF/classes/Log4j.properties在CATALINA-HOME/logs/app2.log中生成日志,但来自这两个Web应用程序的每个日志都写入CATALINA-HOME/logs/app1.log中。
如何配置Log4j为apache中加载每个webapp创建专用日志文件?

vshtjzan

vshtjzan1#

我终于找到了解决办法。
我们只需要复制每个WAR文件的WEB-INF/lib文件夹中的Log4j和commons lib jar文件,以获得每个Web应用程序的独立Log4j示例。然后,Log4J将获得Log4j.propertiesWeb应用程序的www.example.com文件,以创建自己的Logging示例。
希望能有所帮助。

kupeojn6

kupeojn62#

tiamat的解决方案对我不起作用,我必须配置一个侦听器来初始化日志记录器上下文沿着并显式地向上下文提供配置位置

URL configLocation = Class.forName("com.example.MyAppListener").getResource("/log4j2.xml");
LoggerContext context = (LoggerContext) LogManager.getContext(false);
context.setConfigLocation(configLocation.toURI());
if(!context.isInitialized()) {
    context.initialize();
}else {
    context.reconfigure();
}

相关问题