本文介紹了Log4j2錯誤無法識別的格式說明符[t]的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我有一個在Tomcat 8上運行的Web應(yīng)用程序的log4j2配置文件,如下所示
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="30" status="trace" strict="true">
<Properties>
<Property name="logdir">/path/to/log/dir</Property>
<Property name="filename">somelogfile.log</Property>
</Properties>
<Loggers>
<Logger name="some.package.name" level="debug" additivity="false">
<AppenderRef ref="RollingFile"/>
</Logger>
</Loggers>
<Appenders>
<RollingFile name="RollingFile" fileName="${logdir}/${filename}" filePattern="${logdir}/${filename}.%d{yyyyMMdd}.gz">
<PatternLayout>
<Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="6" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
</Configuration>
我看到我的Web應(yīng)用程序?qū)懭肴罩疚募覟榫€程名稱設(shè)置的%t模式似乎無法解析,因此我得到如下日志語句
2017-06-10 20:34:51,696 DEBUG s.p.n.SomeServlet [%t] some log message
請注意,我得到的是%t而不是線程名稱
為了解決此問題,我使用選項
啟動了Tomcat
-Dorg.apache.logging.log4j.simplelog.StatusLogger.level=TRACE
在部署WebApp和初始化log4j2時,我看到Catalina.out中打印了以下消息。
ERROR StatusLogger Unrecognized format specifier [thread]
ERROR StatusLogger Unrecognized conversion specifier [thread] starting at position 25 in conversion pattern
2017-06-10 19:51:14,277 localhost-startStop-1 DEBUG PluginManager 'Converter' found 41 plugins
2017-06-10 19:51:14,609 localhost-startStop-1 ERROR Unrecognized format specifier [t]
2017-06-10 19:51:14,614 localhost-startStop-1 ERROR Unrecognized conversion specifier [t] starting at position 6 in conversion pattern.
我的Web應(yīng)用程序包含以下JAR文件
WEB-INF/lib/log4j-api-2.8.2.jar
WEB-INF/lib/log4j-core-2.8.2.jar
WEB-INF/lib/log4j-web-2.8.2.jar
不確定導(dǎo)致打印%t而不是實際線程名稱的原因。
。
Log4j2
我唯一一次看到類似的情況是在類路徑包含多個版本的推薦答案時。盡管如此,我并沒有調(diào)查找出根本原因。
這篇關(guān)于Log4j2錯誤無法識別的格式說明符[t]的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,