我已将 log4j 版本从 1.2.17 更新到 log4j-core-2.17.1,这是为了修复 log4jshell 漏洞。
在构建代码时,我收到找不到 PatternLayout 和 ConsoleAppender 错误消息。
war 文件中不应该有除 log4j-core-2.17.1 之外的其他任何 log4j 版本,因此我在 pom.xml 文件的 slf4j 依赖项中排除了 lo4j
请知道如何修复此错误。
代码片段
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.ConsoleAppender;
import org.apache.logging.log4j.PatternLayout;
import jxl.common.Logger;
public class Booking {
static Logger logger = Logger.getLogger(Booking.class);
public static boolean isChecked(String[] includeProps) {
logger.info("Start of method");
return true;
}
}
pom.xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.36</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.36</version>
</dependency>
log4j.properties
log4j.rootLogger=INFO,stdout
log4j.logger.requestLogger=debug, requestAppender
log4j.additivity.requestLogger=false
log4j.appender.stdout=org.apache.log4j.FileAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.File=/apps/opt/logs/App.log
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
错误信息
cannot find symbol
[ERROR] symbol: class PatternLayout
cannot find symbol
[ERROR] symbol: class ConsoleAppender
[ERROR] symbol: class variable Logger
按如下方式更改您的导入:
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.appender.ConsoleAppender;
import org.apache.logging.log4j.core.layout.PatternLayout;
这是因为 log4j 2.x.x 版本的结构发生了重大变化。
嘿,你是如何更新log4j的,你能在这里提到这个过程吗?