我需要在我们的Web应用程序中设置两个不同的log4j2 xml文件,这些文件记录到2个不同的日志文件中(在不同目录中)。
此Web应用程序使用无法以任何方式修改的log4j配置:
System.setProperty("log.dir", dirLogs);
System.setProperty("log4j.configurationFile", "file://" + servletPath + "WEB-INF/log4j.xml");
this.accessLog = LogManager.getLogger("LOGGER_ACCESS");
用户可以将jars上传到此Web应用程序,并且这些jars也可以包含日志记录。这是一个用户尝试也使用log4j2的示例:
System.setProperty("log4j.configurationFile", PATH_TO_USER_LOG4J_XML);
confirmLog = LogManager.getLogger("LOGGER_CONFIRM");
但这不起作用。 Web应用程序日志记录有效,但用户日志记录无效。从记录器中打印信息,我们可以看到:
confirmLog = LOGGER_CONFIRM:OFF in AsyncContext@4c23524b
confirmLogClass = org.apache.logging.log4j.core.async.AsyncLogger
关闭。实际上,如果我们重新启动Web应用程序,则不会创建日志文件。
如何使用独立的配置同时运行这两个日志?