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

Очевидно, что упаковка файла конфигурации log4j в приложение платформы NetBeans требует некоторого обдумывания. Это то, что я пробовал...

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

В моих классах я получаю экземпляр регистратора, как всегда:

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. file не являются системными свойствами, а являются переменными среды, поэтому раньше он не работал. Спасибо. ;) - person Tomislav Nakic-Alfirevic; 12.11.2011
comment
Пожалуйста. Обратите внимание и на редактирование. Честно говоря, вам больше повезет с такими вопросами на форуме. - person Jonathan Spooner; 12.11.2011