用 log4j2.xml 初始化 slf4j

我想在 log4j 上使用 slf4j。我在 pom.xml 中添加了以下依赖项(我使用 1.7.25 for slf4j 和 2.10.0 for log4j2):


<dependencies>

    <dependency>

        <groupId>org.slf4j</groupId>

        <artifactId>slf4j-api</artifactId>

        <version>${slf4j.version}</version>

    </dependency>



    <dependency>

       <groupId>org.apache.logging.log4j</groupId>

       <artifactId>log4j-slf4j-impl</artifactId>

       <version>${log4j.version}</version>

    </dependency>


    <dependency>

       <groupId>org.apache.logging.log4j</groupId>

       <artifactId>log4j-api</artifactId>

       <version>${log4j.version}</version>

    </dependency>


    <dependency>

       <groupId>org.apache.logging.log4j</groupId>

       <artifactId>log4j-core</artifactId>

       <version>${log4j.version}</version>

    </dependency>

</dependencies> 

一切都很好,没有编译错误或缺乏依赖项,但我未能在我的类中指定负责 Logger 初始化的配置 (log4j2.xml) 文件。在这种情况下,它总是打印相同的警告


log4j:WARN No appenders could be found for logger (com.mypackage.etc).

log4j:WARN Please initialize the log4j system properly.

log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

我搜索了一种提供配置文件的正确方法,结果是这样的:


LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);

File file = new File("path/to/a/different/log4j2.xml");

context.setConfigLocation(file.toURI());

问题是,在我的情况下,LogManager.getContext(false) 将始终返回 Slf4JLoggerContext 的实例(考虑到我使用 slf4j 作为记录器的外观)并且初始化将因 ClassCastException 而失败。我试图存储 Slf4JLoggerContext 的实例,但它没有为上下文提供设置器。我也没有找到从 log4j 中检索 LoggerContext 的方法。


有没有办法将配置文件(log4j2.xml)提供给 slf4j 以便查看所有的 appender 和 loggers?


呼啦一阵风
浏览 412回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java