首页 文章

log4j2由JBoss日志记录包装

提问于
浏览
0

我有一个使用三个库的应用程序:

  • 首先使用JBoss日志记录

  • 秒使用Apache Commons的日志记录

  • third直接使用log4j2 API(如果它在类路径上)(如果不是log4j,则使用log4j)

并配置为将日志记录路由到log4j 1.2 .

我想切换到log4j2,因为性能问题 .

我从classpath中删除了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日志记录的消息被记录两次
    _999_由JBoss日志记录(通过注释创建的 Logger )发出的消息未根据配置进行格式化,而是使用默认的log4j2格式 . 但是,这些只写一次 .

  • 由一个特定类记录的JBoss日志记录中的非i18ed消息很少,但不是全部(这真的很奇怪)

  • 来自直接使用log4j2 API的消息被记录两到三次

任何提示如何解决这些问题?

1 回答

  • 1

    所以我基本上犯了两个错误:

    • 我没有发现log4j2日志记录中使用的可加性 - 每个 Logger 必须具有可加性= "false"(这可以在某种程度上全局设置吗?)

    • 我的jboss-logging版本是3.1.2.GA,令人遗憾的是,log4j2的使用还没有修复(参见JBLOGGING-94) . 它仅在非发布版本3.1.4.GA中修复,因此我必须使用SNAPSHOT版本(并且无法在支持log4j2的情况下发布我的应用程序) .

相关问题