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

#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. Всегда пожалуйста. Также обратите внимание на правку. Честно говоря, вам больше повезет с подобными вопросами на форуме.