Как да пакетирам конфигурационен файл log4j в приложение NetBeans Platorm?

Пакетирането на конфигурационен файл log4j в приложение на NetBeans Platform очевидно изисква известно обмисляне. Това опитах...

Поставих log4j.xml в src/main/resources/my/package/log4j.xml на some_netbeans_module. Пакетът е публичен модулен пакет (т.е. класове от този пакет се използват от други пакети). Създадох отново модула и потвърдих, че файлът всъщност се пакетира в модула.

В моите класове получавам екземпляр на logger както винаги:

static final Logger log = Logger.getLogger(ThisClass.class);

Всяко приложение на платформата NetBeans има файл my_app.conf, който прави възможно задаването на определени свойства. Тук задавам log4j.conf:

log4j.configuration="/my/package/log4j.xml"

Сега, когато стартирам приложението, виждам следния резултат:

[INFO] /home/me/my_app/application/target/my_app/bin/../etc/my_app.conf: 5:
log4j.configuration=/my/package/log4j.xml: not found

Какво не е наред с горната конфигурация?


person Tomislav Nakic-Alfirevic    schedule 11.11.2011    source източник


Отговори (1)


Във файла my_app.conf, ако добавите свойството log4j.configuration към свойството default_options, така:

default_options="...<other options> -J-Dlog4j.configuration=my/package/log4j.xml"

тогава тази опция ще бъде предадена на JVM. Забележете, че към свойството log4j е добавено -J-D. -J се използва от NetBeans за очертаване на JVM свойства, а -D се използва от JVM за очертаване на системно свойство.

Също така можете/трябва да премахнете кавичките и първоначалното /, тъй като кавичките не са необходими и NetBeans ще се оплаче, ако имате първоначалното /

Другият начин да направите това и начинът, който предпочитам, тъй като не изисква редактиране на файла .conf, е да поставите файла log4j.xml в пакета по подразбиране. Ако имате други изисквания, които ви пречат да направите това, не забравяйте, че трябва да поставите свойството log4j.configuration във файла platform.properties на приложението, докато сте в режим на разработка и изпълнявате приложението вътре в IDE. Така:

run.args.extra=-J-Dlog4j.configuration=my/package/log4j.xml

Редактиране: За въпроси относно платформата NetBeans може да имате повече късмет да публикувате в NetBeans Форум за потребителите на платформа.

person Jonathan Spooner    schedule 11.11.2011
comment
Ще го пробвам по-късно днес и ще видя докъде ще ме отведе. Не съм твърде оптимист обаче: намерих примери от my_app.conf файлове, които задават параметъра log4j.configuration точно както направих аз. Намирам подхода за малко по-чист, ако работи, отколкото добавянето му като JVM свойство в default_options. Определено оценявам предложението! - person Tomislav Nakic-Alfirevic; 11.11.2011
comment
Дадено. Кажете ни как се оказва - person Jonathan Spooner; 11.11.2011
comment
Порових го малко и открих, че /my/package работи по същия начин като my/package (без начална наклонена черта) и че променливите в conf. файлът не са системни свойства, а наистина променливи на средата, поради което не работеше преди. Благодаря. ;) - person Tomislav Nakic-Alfirevic; 12.11.2011
comment
Моля. Обърнете внимание и на редакцията. Честно казано, ще имате повече късмет с този тип въпроси във форума. - person Jonathan Spooner; 12.11.2011