Spring4.3.30+Hibernate5应用程序。xml具有所有log4j2依赖项。
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>${log4j2.version}</version>
</dependency>
甚至添加了log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration status="TRACE">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%p [%t] %c{1}.%M(%L) | %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
我得到的错误是:
ERROR StatusLogger Unrecognized format specifier [d]
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [thread]
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [level]
ERROR StatusLogger Unrecognized conversion specifier [level] starting at position 35 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [logger]
ERROR StatusLogger Unrecognized conversion specifier [logger] starting at position 47 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [msg]
ERROR StatusLogger Unrecognized conversion specifier [msg] starting at position 54 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [n]
ERROR StatusLogger Unrecognized conversion specifier [n] starting at position 56 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [d]
ERROR StatusLogger Unrecognized conversion specifier [d] starting at position 16 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [thread]
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern.
ERROR StatusLogger Unrecognized format specifier [level]
ERROR StatusLogger Unrecognized conversion specifier [level] starting at position 35 in conversion pattern.
即使我的模式不包含默认的布局,但是当我不断出现上述错误时,我还缺少什么呢?在迁移到log4j2之前,我使用的是log4j。我不打算迁移到log4j2,但是由于我必须升级spring和hibernate,我开始得到error statuslogger找不到log4j2配置文件。这时我决定迁移到log4j2。
1条答案
按热度按时间dzjeubhm1#
首先,让我们列出您的依赖项及其作用:
log4jcl为apachecommons日志记录提供了一个实现,将这些日志记录调用路由到log4j2。
log4j核心是log4j2实现。
log4j-slf4j-impl使用slf4j api将日志记录调用路由到log4j 2。
log4japi是log4j2api。
log4j-1.2-api将使用log4j 1.x进行的日志记录调用路由到log4j 2。
log4j-to-slf4j将日志记录调用从log4j 2api路由到slf4j。
如果从描述中不清楚,第6项将是一个问题。首先,现在有了log4j 2api的两个实现:log4j核心和log4j到slf4j。如果log4j-to-slf4j是一个“赢”的人,那么你最终会因为log4j-to-slf4j之间的呼叫会跳转,然后又会跳转回来而无处登录。
然而,若这些都在pom的dependencymanagement部分,那个将是一个不同的故事,因为它所做的只是声明您想要使用哪个版本的jar。
至于您看到的错误,这是因为log4j的核心插件由于某种原因没有被加载。如果您将所有内容着色到一个jar中,并且没有包含log4j的log4jplugins.dat文件,则可能会发生这种情况。