Я думаю, что это не поддерживается, но в принципе вы можете сделать две вещи, чтобы принести в вашей среде переменные:
Использование System.setProperty перед тем Log4J получает сконфигурированные
Convert (ваши) переменные окружения в свойствах системы в вашей пусковой
Первый вариант в основном сводится к следующему:
for (Map<String,String>.Entry entry : System.getenv().entrySet()) {
System.setProperty(entry.getKey(), entry.getValue());
}
... но вопрос, конечно, где поставить этот код , В частности, если вы работаете в каком-то контейнере Tomcat или подобном, это может быть проблематичным.
Другое во многом зависит от вашей окружающей среды. В принципе, если у вас есть скрипт, который запускает приложение, вы можете написать некоторые оболочки магию, чтобы установить все переменные окружения в качестве свойств, или только те, которые вам нужно, например:
java -DMY_ENV=$MY_ENV -DMY_OTHER_ENV=$MY_OTHER_ENV -cp ... com.example.Main
Также возможно изменить ваш запуск сервера для поддержки этого, например каталины.sh или аналогичные.
Я просто прокомментировал наиболее upvoted ответ и объяснил мои рассуждения. Я также только что поддержал ответ, который я принял, за то, что он стоит. – 2015-09-30 20:46:59