[ -f "$var" ]
Проверяет, существует ли $var
существующий файл (обычный файл). Символическая ссылка также проходит этот тест.
Я думаю, что это не поддерживается, но в основном можно сделать две вещи ввести переменные среды:
Использование 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 или подобный.
Я пытался сделать это недавно и не мог заставить его работать. То, что я закончил тем, что делал, отправляет переменную при запуске. Поэтому скажите, что у Вас есть переменная среды, названная $LOG_LEVEL:
<level value="${log_level}" />
и при запуске...
java -Dlog_level=$LOG_LEVEL your_app