【发布时间】:2014-04-30 08:11:51
【问题描述】:
根据here,Log4j2 应该适用于 Tomcat7.0.47。我正在使用 TomEE Plus 7.0.47。
我在我的 web-inf/classes 文件夹中部署了一个带有 log4j2.xml 的 web 应用程序。这是配置:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" fileName="${sys:catalina.home}/logs/testapp.log">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Logger name="org.alex" level="TRACE" additivity="false">
<AppenderRef ref="File"/>
</Logger>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
我在一个名为 org.alex.util.JSON 的类中声明了一个记录器:
private static final Logger LOG = LoggerFactory.getLogger(JSON.class);
我使用的是 slf4j-api 1.7.5,并在 tomcat 库中添加了以下库:
- slf4j-api-1.7.5.jar
- log4j-api-2.0-rc1.jar
- log4j-core-2.0-rc1.jar
- log4j-slf4j-impl-2.0-rc1.jar
如果我将配置状态更改为 TRACE,我可以看到我的配置文件被拾取并且配置按预期进行。我还可以看到正在添加的 MBean。
但是,我的日志文件中没有一条日志记录语句结束。我调试到 log4j2 记录器,看到 isEnabled(...) 方法返回 false 因为记录器(com.alex.util.JSON)设置了级别“错误”,而配置将包 org.alex 设置为 TRACE .
进一步调查显示它使用为 level=ERROR 配置的 DefaultConfiguration,并且只配置了 root。我正在考虑一个类加载器问题,但我似乎无法弄清楚原因是什么以及如何解决它。
有谁知道我做错了什么?
【问题讨论】:
标签: java log4j2 apache-tomee