#configuration #log4j #netbeans-platform
#конфигурация #log4j #netbeans-платформа
Вопрос:
Упаковка файла конфигурации 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
Что не так с приведенной выше конфигурацией?
Ответ №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……….
Комментарии:
1. Я попробую позже сегодня и посмотрю, к чему это приведет. Однако я не слишком оптимистичен: я нашел образцы файлов my_app.conf, в которых параметр log4j.configuration задается точно так же, как и я. Я нахожу такой подход немного более чистым, если он работает, чем добавление его в качестве свойства JVM в default_options. Я определенно ценю это предложение!
2. Конечно. Дайте нам знать, как это получается
3. Я немного повозился с ним и обнаружил, что /my /package работает так же, как мой / package (без начальной косой черты), и что переменные в conf. файл — это не системные свойства, а переменные окружения, вот почему раньше это не работало. Спасибо. 😉
4. Всегда пожалуйста. Также обратите внимание на правку. Честно говоря, вам больше повезет с подобными вопросами на форуме.