как использовать log4j с Netbeans 6.9.1 для настольного приложения Java

Я пытаюсь использовать log4j для своего настольного приложения Java, которое я разрабатываю с помощью IDE Netbeans 6.9.1. У меня есть файл log4j.properties в папке META-INF для ведения журнала во время разработки. Я также пытался поставить его вместе с исполняемым файлом jar (после установки), но оба они не работали. Он также выдает исключение, когда я вызываю метод.

PropertyConfigurator.configure(filepath);

и это всегда выдает это исключение независимо от расположения файла log.properties

java.io.FileNotFoundException: META-INF\log4j.properties (The system cannot find the path specified)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:306)
        at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:324)
        at fi.xmldation.common.SharedMethods.readSettingsFile(SharedMethods.java:43)

Это ошибка в IDE или я что-то не так делаю?


person Tausif Baber    schedule 04.04.2011    source источник
comment
log4j ищет файлы конфигурации в пути к классам, поэтому размещение log4j.properties в папке дерева проектов IDE с исходными кодами должно работать (iirc NetBeans включает файлы в сгенерированный jar)   -  person mjn    schedule 04.04.2011


Ответы (2)


Если вы запускаете программу в среде IDE, такой как NetBeans, дополнительно проверьте, находится ли файл в выходном каталоге среды IDE. Обычно log4j ищет этот файл в пути к классам, поэтому необходимо убедиться, что NetBeans действительно копирует его туда. Ваша IDE, скорее всего, установит свой собственный выходной каталог как часть пути к классам, поэтому я думаю, что у вас есть (по крайней мере) два варианта: либо добавить каталог, в который вы поместили log4j.properties, в путь к классам, либо убедиться, что он копируется в выходной каталог IDE. Удачи!

person AndersG    schedule 04.04.2011
comment
Спасибо за ответ, но я уже знаю эти вещи, поэтому, пожалуйста, прочитайте вопрос еще раз. Проблема в том, что он всегда выдает исключение: файл не найден, даже если вы указываете какой-либо путь (C:/some_folder/filename). - person Tausif Baber; 04.04.2011
comment
Можете ли вы опубликовать структуру каталогов вашего проекта? - person AndersG; 04.04.2011
comment
для разработки: src-›META-INF-›log4j.properties ============== buildpath: build-›classes-›META-INF-›log4j.properties ====== ===== я могу получить доступ к файлу с помощью объекта File. так что нет ничего плохого в пути к файлу и т. д. может быть какое-то жестко закодированное значение для функции настройки log4j или оно несовместимо с j2se 6 с netbeans 6.9) - person Tausif Baber; 04.04.2011

это сработало, если я загрузил свойства из файла свойств

PropertyConfigurator.configure((new Properties()).load(new FileInputStream ("log4j.properties")));
person Tausif Baber    schedule 04.04.2011