Настройте log4j при использовании Weld CDI

Я хотел бы программно настроить расположение файлов журнала. Таким образом, я хочу перезаписать значения по умолчанию в моем файле log4j.properties. Это не противоречит каким-либо проблемам. Я использую LogManager.resetConfiguration() и PropertyConfigurator.configure(props), чтобы мои местоположения файлов обновлялись (хранились в реквизитах). Эта методология работает, файлы журналов с этого момента записываются в новое местоположение файла.

Моя проблема возникает при использовании Weld. Это связано с тем, что внутри Weld также используется регистратор, указанный в моем файле регистрации: 2014-08-13 12:55:15.589 [main:0] DEBUG Weld.java:84 Method: <clinit> - Logging Provider: org.jboss.logging.Log4jLoggerProvider.

Поскольку я использую org.jboss.weld.environment.se.StartMain в качестве основного класса, я не имею никакого влияния на возможности регистрации Weld. Теперь у меня есть 3 файла журнала (как описано в моих log4j.properties) в 2 разных местах. В то время как один содержит некоторую информацию об отладке Weld, а другой содержит всю информацию о журнале, начиная с инициализации и далее.

Таким образом, логически я хотел бы получить только 1 каталог с файлами журналов, чтобы Weld адаптировался к новому местоположению файла log4j. Или иметь log4j для копирования старого содержимого журнала, создания новых файлов журнала + со старым содержимым и удаления старых файлов журнала.

Я не хочу использовать аргументы VM, так как мне нужно программно назначать места ведения журналов.


person Velth    schedule 13.08.2014    source источник


Ответы (1)


Решением в подобных случаях является использование slf4j. См. раздел об объединении устаревших API.

После того, как вы объединили все журналы, вы можете использовать slf4j-to-log4j, чтобы направить все журналы в ваши настройки log4j.

person Jan Galinski    schedule 13.08.2014
comment
Спасибо за комментарий, мне удалось загрузить slf4j и slf4j-log4j12 и установить поставщика ведения журнала для сварки на org.jboss.logging.Slf4jLoggerProvider. Но тем не менее, сварка регистрируется до того, как я могу установить свои каталоги регистрации. Таким образом, я все еще получаю 2 файла журнала (хотя все журналы после инициализации сварки записываются в новый файл журнала). Любая подсказка (ы)? - person Velth; 15.08.2014
comment
Не могли бы вы показать мне код? Где вы инициализируете свои регистраторы? - person Jan Galinski; 15.08.2014