2015-11-16 2 views
1

Я определил переменную в web.xml внутри пакета войны, как:Использование переменной среды определяется в web.xml в файлах конфигурации

<env-entry> 
     <env-entry-name>LOG_DIR</env-entry-name> 
     <env-entry-type>java.lang.String</env-entry-type> 
     <env-entry-value>${CATALINA_HOME}</env-entry-value> 
</env-entry> 

Также у меня есть logback.xml файл в пути к классам. И я хочу использовать эту переменную там:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <file>${LOG_DIR}/logs/WebStore.log</file> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <!-- daily rollover --> 
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
      <!-- keep 30 days' worth of history --> 
      <maxHistory>30</maxHistory> 
     </rollingPolicy> 

     <encoder> 
      <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%logger{36}] [%thread] %msg%n</pattern> 
     </encoder> 
    </appender> 

Когда я начинаю свой экземпляр TOMCAT я LOG_DIR_IS_UNDEFINED папку в директории TOMCAT бен.

Я знаю, что могу создать файл свойств и импортировать его в файл logback.xml, но я не хочу создавать еще один файл, и я заинтересован в использовании переменной таким образом. Является ли это возможным?

+0

Возможный дубликат: http://stackoverflow.com/questions/201188/using-system-environment-variables-in-log4j-xml-configuration – Mohit

+0

Хорошее замечание, но я думаю, что это актуально, а не дубликат. Это для logback другого для log4. –

ответ

1

Записи окружения могут быть видны в конфигурационных файлах, но обычно программисту необходимо специально задать область окружения. Например, $${env:USER} что-то подобное будет работать в Log4j. Смотрите здесь: http://logging.apache.org/log4j/2.x/manual/lookups.html

См также этот ответ: How to use system environment variables in log4j.properties?

Аналогичный механизм может существовать в Logback, однако я не мог найти что-то по быстрому поиску. Если все находят, вы можете более подробно отредактировать этот ответ и добавить его. В конкретном случае вы можете напрямую использовать ${CATALINA_HOME} внутри logback.xml.

+0

В основном я интересуюсь жизненным циклом, когда загружается logback.xml, являются ли записи среды из web.xml применены до контекста и видимы? – Jack

+0

Я ожидал бы да, так как сервер приложений сначала рассмотрит web.xml перед загрузкой сервлетов, которые ссылаются на журнал. Возможно, есть способ изменить это (может быть и зависимым от сервера), но это не должно быть вероятным. –

Смежные вопросы