我需要更改log4j2配置文件的默认位置。我按照这里的文档 https://logging.apache.org/log4j/2.x/manual/webapp.html
但是log4j2可以看到的唯一文件是类路径中的log4j2.xml。否则我得到"没有找到log4j2配置文件"
我试过了:
-1设置上下文参数
-2将系统属性Log4jContextSelector设置为" org.apache.logging.log4j.core.selector.JndiContextSelector"。并使用JNDI选择器
如此处所述 https://logging.apache.org/log4j/2.x/manual/webapp.html#ContextParams
-3 lookups:web,env,sys,ctx和bundle。前4个故障只有捆绑工作,但你只能在类路径中查找。
-4 set isLog4jAutoInitializationDisabled为true,我不知道在这种情况下如何配置过滤器。如果我将它们包含在web.xml中,则不会部署该应用程序。
项目中的jar
./WEB-INF/lib/log4j-jcl-2.4.1.jar
./WEB-INF/lib/log4j-core-2.4.1.jar
./WEB-INF/lib/log4j-slf4j-impl-2.4.1.jar
./WEB-INF/lib/log4j-api-2.4.1.jar
答案 0 :(得分:1)
在我使用.propeties文件的情况下,我使用下面显示的代码
@Plugin(name = "LogsConfigurationFactory", category = ConfigurationFactory.CATEGORY)
public class CustomLogsConfigurationFactory extends PropertiesConfigurationFactory {
@Override
public Configuration getConfiguration(String name, URI configLocation) {
File propFile = new File("/path_to/log4j2.properties");
return super.getConfiguration(name, propFile.toURI());
}
@Override
protected String[] getSupportedTypes() {
return new String[] {".properties", "*"};
}
}
我认为你可以在 XmlConfigurationFactory 上更改CustomLogsConfigurationFactory,并在getSupportedTypes方法中更改return typse。我希望这会对你有所帮助。