2013-12-05 3 views
0

У меня есть приложение, используя три библиотеки:log4j2 обернут JBoss протоколирования

  1. первый использует JBoss лесозаготовками
  2. второй использует протоколирование Apache Commons'
  3. третий использует непосредственно log4j2 API, если он находится на пути к классам (или log4j , если это не так)

и был настроен для маршрутизации регистрации в log4j 1.2.

Я хочу переключиться на log4j2 из-за проблем с производительностью.

Я удалил log4j из pathpath и добавил 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> 

Теперь у меня есть несколько проблем:

  1. сообщения, поступающие от Apache Commons Logging регистрируются дважды
  2. Сообщения i18ed по протоколу JBoss (через регистратор, созданный из аннотаций ) не форматируются в соответствии с конфигурацией, но вместо этого использует формат log4j2 по умолчанию. Однако они записываются только один раз.
  3. Есть несколько не-i18ed обменивались сообщениями с лесозаготовительной JBoss вошли одним конкретным классом, но не все (это действительно странно)
  4. сообщения, поступающие от прямого использования log4j2 API вошли два три раза

Любые подсказки по их устранению?

+0

Вы используете JBoss Logging только для возможностей i18n? Существует запрос на получение запроса для получения поддержки log4j2 в JBoss Logging, https://github.com/jboss-logging/jboss-logging/pull/9. После этого вы можете использовать JBoss Logging в качестве фасада и log4j2 в качестве менеджера журналов. –

+0

Нет, запись в JBoss используется в библиотеке, которую я использую, и я не могу многое изменить. Я также предпочел бы отказаться от шага с log4j-1.2-bridge. Тем не менее, я не вижу причины для такой проблемы, которую я испытываю при использовании старого API. –

ответ

1

Так что я сделал в основном две ошибки:

  1. Я не пятнистый аддитивность, используемый в лесозаготовительной log4j2 - каждый регистратор должен иметь аддитивность = «ложь»
  2. (это могло быть установлено как-то глобально?)
  3. Моя версия jboss-logging была 3.1.2.GA, где, к сожалению, использование log4j2 еще не исправлено (см. JBLOGGING-94). Он был исправлен только в не выпущенной версии 3.1.4.GA, поэтому я должен использовать версию SNAPSHOT (и не могу отпустить мое приложение с поддержкой log4j2).
Смежные вопросы