我们可以log4j2.properties使用系统属性-Dlog4j2.configurationFile=将www.example.com文件<file_path>外部化,但是,在同一个服务器上部署了多个Web应用程序,因此,我只想显式地为我的Web应用程序设置文件路径。一种方法是使用下面的代码。但是,LoggerContext是一个私有的API,在次要版本中可能会发生变化www.example.com )外部log4j2.properties文件?
// import org.apache.logging.log4j.core.LoggerContext;
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
File file = new File("path/to/a/different/log4j2.xml");
// this will force a reconfiguration
context.setConfigLocation(file.toURI());
1条答案
按热度按时间u3r8eeie1#
如果您将
log4j-web
添加到应用程序中,则会出现特定于Web应用程序的附加功能(参见documentation)。在您的特定情况下,可以使用
log4jConfiguration
servlet上下文参数指定该特定应用程序的配置文件的位置。如何从外部指定servlet上下文参数取决于servlet容器。例如,在Tomcat中,您可以在
context.xml
file中执行此操作:备注:
org.apache.logging.log4j.core.LoggerContext
不是内部类,它只是Log4j Core(Log4j API的正式实现)中的类,而org.apache.logging.log4j.LoggerContext
属于Log4j API。除非将实现从Log4j Core切换到另一个Log4j Core,否则LoggerContext
将始终为core.LoggerContext
。