2013-10-11 3 views
2

Мне было интересно, есть ли способ определить appenders (файл, консоль и т. Д.) В другом файле, чем тот, который определяет фактические свойства ведения журнала. Идея возникла из системы, которую я разрабатываю, и у нас есть следующее требование: Различные версии системы будут развернуты на одном сервере. Поэтому, чтобы не поддерживать разные файлы свойств log4j, все они будут устанавливать одни и те же свойства и различаются в файловых добавках (чтобы узнать, какой журнал был записан из какой версии системы). Заранее благодаренLog4j различные .property файлы для Appenders

+0

Работает ли каждая версия в отдельной JVM? –

+0

Да, но не на разных контейнерах. – airmil

ответ

1

Вы можете использовать DOMConfigurator или PropertyConfigurator для загрузки настроек log4j из внешнего файла. Вы можете вызвать этот API несколько раз под управлением, чтобы загрузить настройки из разных источников.

В вашем случае вы можете динамически загружать данные из Appender из другого файла свойств на основе версии. Как и суффикс некоторого идентификатора версии для имени файла и его общий путь.

0

Если каждая версия работает на различных процессах VM (на разных портах), вы можете добавить аргумент к виртуальной машине. например:

-Dmysystem.version=1.0.1 

Если вы используете конфигурацию XML:

<param name="file" value="/logs/system.v${mysystem.version}.log" /> 

Из если вы используете свойства:

log4j.appender.ROLL.File=/logs/system.v${mysystem.version}.log 

В обоих случаях, сгенерированный файл может быть:

/logs/system.v1.0.1.log 

Таким образом, вы n поддерживает один файл конфигурации и динамические имена файлов.

+0

К сожалению, это не так, поскольку они запускаются на разных виртуальных хостах и ​​не разных портах. – airmil

+0

К счастью, это может сработать, даже для каждого файла вы должны добавить имя хоста. –

Смежные вопросы