最近做了一个解析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>
说明如下: