【问题标题】:Log4j2 in a spring web app with servlet 3.0带有 servlet 3.0 的 Spring Web 应用程序中的 Log4j2
【发布时间】:2015-10-17 14:26:03
【问题描述】:

我需要更改 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 查找:web、env、sys、ctx 和 bundle。前 4 个失败的包有效,但您只能在类路径中查找。

-4 将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

【问题讨论】:

    标签: spring log4j2


    【解决方案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 方法中更改返回类型。我希望这会对你有所帮助。

    【讨论】:

    猜你喜欢
    • 2014-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2014-02-17
    • 2013-07-28
    • 2014-07-18
    相关资源
    最近更新 更多