【发布时间】:2013-12-05 15:44:05
【问题描述】:
我有一个使用三个库的应用:
- 首先使用 JBoss 日志记录
- 第二次使用 Apache Commons 的日志记录
- 第三个直接使用 log4j2 API 如果它在类路径(或 log4j 如果不是)
并配置为将日志记录路由到 log4j 1.2。
由于性能问题,我想切换到 log4j2。
我已经从类路径中删除了 log4j,并在那里添加了 log4j2-1.2-bridge、log4j2-core 和 log4j2-api。我已经通过 -Dlog4j.configurationFile 配置了日志记录,配置类似于以下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %m%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="foo" level="TRACE">
<AppenderRef ref="CONSOLE"/>
</Logger>
<Logger name="foo.bar" level="DEBUG">
<AppenderRef ref="CONSOLE"/>
</Logger>
<Logger name="xxx" level="TRACE">
<AppenderRef ref="CONSOLE"/>
</Logger>
<Root level="DEBUG">
<AppenderRef ref="CONSOLE"/>
</Root>
</Loggers>
</Configuration>
现在,我有几个问题:
- 来自 Apache Commons 日志的消息被记录两次
- 由 JBoss 日志记录 i18ed 的消息(通过从 annotations) 没有按照配置进行格式化,而是 改用默认的 log4j2 格式。不过这些只写 一次。
- JBoss 日志记录的非 i18ed 消息很少 由一个特定的班级,但不是全部(这真的很奇怪)
- 来自直接使用 log4j2 API 的消息被记录两个到 三遍
任何提示如何解决这些问题?
【问题讨论】:
-
您是否将 JBoss 日志记录仅用于 i18n 功能?在 JBoss Logging github.com/jboss-logging/jboss-logging/pull/9 中有一个获取 log4j2 支持的拉取请求。完成后,您可以使用 JBoss Logging 作为外观,使用 log4j2 作为日志管理器。
-
不,我使用的库中使用了 JBoss 日志记录,对此我无法更改太多。我也更愿意省略 log4j-1.2-bridge 的步骤。不过,我看不出在使用旧 API 时遇到这样的麻烦的原因。
标签: logging jboss log4j log4j2