Использование переменной окружения для accesslogvalve dir

Я хочу заполнить "dir" в accesslogvalve из значения из setenv.bat. Пример:

<Valve
className="org.apache.catalina.valves.AccessLogValve"
directory="${my.logs.dir}"
prefix="access_log"
fileDateFormat="yyyy-MM-dd.HH"
suffix=".log"
pattern="%t %H cookie:%{SESSIONID}c request:%{SESSIONID}r  %m %U %s %q %r"/>

Я указал "my.logs.dir" в setenv.bat

set my.logs.dir=C:\xyz\abc

Когда я запускаю Tomcat, я вижу папку ${my.logs.dir} под установкой Tomcat. Проблема в том, что ${my.logs.dir} не был заменен переменной env при запуске tomcat. Если я даю жестко закодированное значение, как dir="C:\xyz\abc"работает нормально.

Может ли кто-нибудь порекомендовать мне заменить ${my.logs.dir} значением из среды во время запуска сервера?

Спасибо

1 ответ

Решение

Я не думаю, что переменные среды доступны по умолчанию в файлах конфигурации Tomcat. Системные свойства, однако, таковы. Поэтому, если вы добавите свою переменную как системное свойство вместо переменной среды, она должна работать.

Если по какой-то причине вам абсолютно необходимо использовать переменные среды, в документации Tomcat есть ссылка на замены свойств в разделе о системных свойствах, который можно настроить для настройки поведения Tomcat:

org.apache.tomcat.util.digester. PROPERTY_SOURCE

Установите для него полное имя класса, который реализует org.apache.tomcat.util.IntrospectionUtils.PropertySource. Требуется иметь открытый конструктор без аргументов.

Используйте это, чтобы добавить источник свойства, который будет вызываться, когда обозначенные ${параметр} параметры найдены в файлах XML, которые анализирует Tomcat.

Другие вопросы по тегам