Java项目引入POI后log4j报错-解决办法

最近做了一个解析Exce文件的java小项目,并没有使用Maven或Gradle进行构建。在引入POI的包后,运行一直有红字提示“ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...”,非常令人讨厌。

【环境】:

IntelliJ IDEA 2023.3.5 (Community Edition)

JDK 1.8

POI 5.2.3

【问题分析】:

\poi-bin-5.2.3\lib目录下,发现了log4j-api-2.18.0.jar

\poi-bin-5.2.3\ooxml-lib目录下,发现了slf4j-api-1.7.36.jar

这说明,poi的库本身就包含了日志实现的方案;但是从报错信息看又缺少一些实现的库文件。

【解决方案】:

1.在classpath下添加log4j-core-2.18.0.jar(版本与poi中的log4j-api-2.18.0.jar保持一致)。

下载地址,https://archive.apache.org/dist/logging/log4j/,下载下来的zip包中有一堆文件,我们只需要log4j-core-2.18.0.jar

2.在src目录下增加文件log4j2.xml,以下配置样例:

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
        </Console>
        <File name="File" fileName="logs/error.log" append="true">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console" />
            <AppenderRef ref="File" />
        </Root>
    </Loggers>
</Configuration>

说明如下:

Java中,使用Log4j2进行日志记录时,如果你遇到了"StatusLogger Log4j2 could not find a logging implementation."这个错误,这通常意味着Log4j2无法找到一个有效的日志实现。这可能是因为Log4j2的配置文件缺失或者配置不正确,也可能是因为相关依赖没有被正确引入到你的项目中。 要解决这个问题,你可以按照以下步骤操作: 1. 确保你的项目中已经包含了Log4j2的依赖。如果你是通过Maven来管理项目依赖的,那么你应该在pom.xml文件中添加了类似下面的依赖配置: ```xml <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.x.x</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.x.x</version> </dependency> ``` 请确保替换`2.x.x`为实际使用的Log4j2版本号。 2. 确保你的项目中存在Log4j2的配置文件。Log4j2会默认寻找名为`log4j2.xml`的配置文件在项目的`resources`目录下。如果这个文件不存在,你需要创建一个,并且确保它包含了Log4j2的配置信息。 3. 如果你的项目中同时包含了其他日志库(如log4j 1.x),可能会发生冲突。确保只引入Log4j2的依赖,并且移除或排除其他日志库的依赖。 4. 如果你正在使用一个框架或应用程序服务器,它可能已经包含了日志实现。在这种情况下,你可能需要根据框架或服务器的要求配置Log4j2,或者使用它默认的日志实现。 5. 如果以上步骤都无法解决问题,可能需要检查项目的构建路径和类路径设置,确保Log4j2的jar包和配置文件都已经正确加入到了类路径中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值