Я думаю, что это не поддерживается, но в основном вы можете сделать две вещи, чтобы ввести переменные среды:
Используйте System.setProperty до того, как Log4J будет настроен
Преобразуйте (ваши) переменные окружения в системные свойства вашего средства запуска
Первый вариант сводится к следующему:
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
Также возможно изменить сценарии запуска вашего сервера для поддержки этого, например. catalina.sh или аналогичный.