本文介绍了Log4j2错误无法识别的格式说明符[t]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个在Tomcat 8上运行的Web应用程序的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应用程序写入日志文件,但我为线程名称设置的%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应用程序包含以下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

不确定导致打印%t而不是实际线程名称的原因。

Log4j2

我唯一一次看到类似的情况是在类路径包含多个版本的推荐答案时。尽管如此,我并没有调查找出根本原因。

这篇关于Log4j2错误无法识别的格式说明符[t]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。