Используя системные переменные в log4j конфигурации XML

[ -f "$var" ] 

Проверяет, существует ли $var существующий файл (обычный файл). Символическая ссылка также проходит этот тест.

47
задан Derek Lewis 14 October 2008 в 13:42
поделиться

2 ответа

Я думаю, что это не поддерживается, но в основном можно сделать две вещи ввести переменные среды:

  1. Использование System.setProperty перед Log4J становится настроенным

  2. , Преобразовывают (Ваши) переменные среды в системные свойства в Вашем средстве запуска

, право преимущественной покупки в основном сводится к этому:

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 или подобный.

11
ответ дан Martin Probst 7 November 2019 в 23:20
поделиться

Я пытался сделать это недавно и не мог заставить его работать. То, что я закончил тем, что делал, отправляет переменную при запуске. Поэтому скажите, что у Вас есть переменная среды, названная $LOG_LEVEL:

<level value="${log_level}" />

и при запуске...

java -Dlog_level=$LOG_LEVEL your_app
48
ответ дан Einar 7 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: