Log4j2在一个带有servlet 3.0的spring web应用程序中

时间:2015-10-17 14:26:03

标签: spring log4j2

我需要更改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

1 个答案:

答案 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。我希望这会对你有所帮助。