2009-05-17 3 views
13

Я использую протоколирование Apache Commons и SLF4J с log4j, но я также хочу использовать log4j.properties в настраиваемом месте, например conf/log4.properties. Вот проблема:Свойства Log4j в нестандартном месте

Если я использую

PropertyConfigurator.configure("conf/log4j.properties"); 

тогда мое приложение привязывается к log4j и поражения цели с ACL и SLF4J.

Каков наилучший способ настройки без приложения, когда-либо знающего, что такое реализация ведения журнала?

ответ

24

Я думаю, что проще всего указать местоположение файла, используя системное свойство log4j.configuration. Приняв пример в Log4J manual:

java -Dlog4j.configuration=conf/log4j.properties -classpath ... 

Я считаю, что Log4J будет найти файл с именем «log4j.properties» в любом месте на пути к классам, но может быть галлюцинация. Однако стоит попробовать.

+9

На самом деле, у меня была та же проблема, что и ОП, но ваше решение не работает для меня. Мне нужно было указать расположение файла log4j.properties в форме стиля URL (-Dlog4j.configuration = file: ///my/conf/log4j.properties). – Haes

+1

Upvotes со всех сторон. Работал для меня только с одним косой чертой после файла: -Dlog4j.configuration = file:/C: /JBoss51/jboss-eap-5.1 /..../ log4j.properties на JBOSS 5.1 EAP на машине Windows 7. – CodeClimber

+0

@kdgregory ... где мы указываем местоположение файла, находится ли он в аргументах VM в конфигурации RUN в проекте eclipse? Или это файл конфигурации в tomcat? – MKod

3

Как вы заявляете, вызывая PropertiesConfigurator, вы связываете свое приложение с log4j. Однако протяженность этого галстука весьма ограничена. Вы можете легко удалить строку, вызывающую PropertiesConfigurator, и перекомпилировать свой код. После этого, предполагая, что вы используете API SLF4J для ведения журнала, вы можете повторно отправить log4j с другой структурой ведения журнала, скажем, logback-classic или j.u.l. просто заменив файлы jar. Таким образом, SLF4J по-прежнему служит своей цели в значительной степени. Я бы не бросил ребенка с водой для ванны.

1

Вы можете указать конфигурационный местоположение файла с VM аргументом

-Dlog4j.configuration="file:/C:/workspace3/local/log4j.properties"

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