Лучшие практики по настройке пути свойств Log4j - PullRequest
5 голосов
/ 28 января 2011

Я использую Log4j в своих приложениях.log4j.properties помещается в банку, которая находится в пути к классам.Этот файл конфигурации используется и работает нормально большую часть времени.

Но иногда генерируемые операторы журналирования не соответствуют файлу конфигурации.

Насколько я понимаю, это потому, что файл свойств выбирается из пути к классам.Каким бы ни был первый файл свойств, он извлекается и используется log4j.Таким образом, иногда мы получаем операторы журналирования, отличные от того, что настроено в файле свойств.

В случае, если приведенная выше причина верна, тогда, я думаю, нам нужно указать файл конфигурации конкретно одним из следующих способов:

  1. Укажите, используя Системные свойства: -Dlog4j.configuration = log4j.properties
  2. Инициализация сервлета Log4jInit.

Пожалуйста, предложите, какой может быть лучший подход.

Ответы [ 2 ]

6 голосов
/ 28 января 2011

В моем приложении я использую ${user.home} dir для хранения log4j.properties, и с помощью муравья мы читаем его.это будет независимо от платформы.также вы можете передать один со встроенным в classpath, но чтение из $ {user.home} - лучший подход, вы или любой не технический специалист можете легко получить к нему доступ.

также вы можете использовать

Динамическое расположение файла журнала

Многие люди жалуются, что Log4j заставляет вас жестко закодировать место, где будут храниться ваши журналы.На самом деле, можно динамически выбирать местоположение файла журнала, особенно если вы используете метод замены свойства $ {log.dir} выше.Вот как:

String dynamicLog = // log directory somehow chosen...
Properties p = new Properties( Config.ETC + "/log4j.properties" );
p.put( "log.dir", dynamicLog ); // overwrite "log.dir"
PropertyConfigurator.configure( p );

См. Также

2 голосов
/ 28 января 2011

При поиске элементов в пути к классам используется первый экземпляр файла с соответствующим именем.Так что добавьте свой .jar на фронт.

set CLASSPATH=myfile.jar;%CLASSPATH%
...