作者:周家华099_359 | 来源:互联网 | 2023-02-01 15:56
我有一个log4j2配置文件,用于在Tomcat 8上运行的Web应用程序,如下所示
/path/to/log/dir
somelogfile.log
%d %p %c{1.} [%t] %m%n
我看到我的网络应用程序写入日志文件,但我有线程名称的%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打印而不是实际的线程名称.
.
1> Remko Popma..:
我见过类似的东西的唯一一次是当classpath包含多个版本的Log4j2时.我没有调查找到根本原因.