2016-11-10 4 views
0

Я пытаюсь запустить приложение java из командной строки с надеждой, что он подберет конфигурационные файлы log4j в другой папке. Вот моя структура папок:log4j не загружает пользовательские свойства config

  • /app -> приложение основной папки

  • /app/config -> хранит пользовательские конфигурационные файлы, включая log4j

  • /app/lib -> хранит все банки

Однако, когда я пытаюсь запустить программу из /app для некоторого reaso п log4j не инициализируются должным образом:

-bash-4.2# pwd 
/app 
-bash-4.2# java -cp config:lib/* -Xmx1024M className 
log4j:WARN No appenders could be found for logger(org.springframework.beans.factory.xml.XmlBeanDefinitionReader). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Удивительно, но если перенести папку конфигурации в /lib, а затем попытаться запустить программу Java оттуда, все это, кажется, работает:

(обновлено структура папок):

  • /app -> приложение базовой папки

  • /app/lib -> хранит все банки

  • /app/lib/config -> хранит пользовательские конфигурационные файлы, включая log4j

Выход:

-bash-4.2# pwd 
/app/lib 
-bash-4.2# java -cp config:* -Xmx1024M className 
<Expected log message now shows up> 

Внутри моего кода я использовал PropertyConfigurator для загрузки файла конфигурации:

PropertyConfigurator.configureAndWatch(loggingConfigFile) 

Где logProperties is def INED в

val loggingConfigFile = "config/custom.logging.properties" 

Первоначально я думал, что проблема с первым сценарием был с какой-то Pathing вопроса, однако при печати из System.getProperty("user.dir") во время выполнения, кажется, что программа действительно работает под /app и что он должен быть в состоянии загрузить файл конфигурации из определенного пути (т.е. /app/config/custom.logging.properties). Что-то не так с настройкой?

ответ

1

EDIT: приложение пытается найти файлы свойств на пути времени выполнения.

Он работает в моем случае

enter image description here

Для значения свойств доступа. Сделайте объект ResourceBundle. Пример:

private final ResourceBundle objRbLdap = ResourceBundle.getBundle("prperties file name"); 
Смежные вопросы