我有一个log4j2配置文件,用于在Tomcat 8上运行的Web应用程序,如下所示
<?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>
我看到我的网络应用程序写入日志文件,但我对线程名称的%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.
我的网络应用程序包含以下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打印而不是实际的线程名称。
答案 0 :(得分:5)
我见过类似的东西的唯一一次是当classpath包含多个版本的Log4j2时。我没有调查找到根本原因。
答案 1 :(得分:2)
如果您使用的是 ShadowJar 和 Gradle ,并且您没有多个Log4J版本,则可以使用其他答案,请尝试以下操作解决了该问题(需要Shadow Plugin> 4.0.0 ,否则请参见this Plugin):
build.gradle
import com.github.jengelman.gradle.plugins.shadow.transformers.Log4j2PluginsCacheFileTransformer
shadowJar{
transform(Log4j2PluginsCacheFileTransformer)
}
答案 2 :(得分:1)
当我运行多个版本的log4j2时,我也经历过这种情况。检查你的任何依赖关系是否拉入重复的罐子......祝你好运!可能是类加载器的噩梦!