2014-10-09 5 views
4

Я пытаюсь настроить приложение RollingFile в tomcat 7.0.23 с log4j2 (2.0.2) с 10 файлами журнала.Log4j2: Подстановка свойств работает неправильно для filePattern в приложении RollingFile

Я использую в файлеPattern $ {sys: catalina.base}, он не работает, и файлы журнала помещаются в каталог tomcat/bin/$ {sys: catalina.base} /.

Интересная часть состоит в том, что первый файл журнала (без номера) создается нормально, под tomcat/logs - это означает, что ему удастся сопоставить атрибут filename с реальным путем.

Когда я заменяю $ {sys: catalina.base} на filePattern = "C: /apache-tomcat-7.0.23/logs/app.%i.log", он работает.

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
     <Console name="CONSOLE" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/> 
     </Console> 
     <RollingFile name="FILE" fileName="${sys:catalina.base}/logs/app.log" 
        filePattern="${sys:catalina.base}/logs/app.%i.log"> 
      <PatternLayout pattern="%d %-5p [%X{REQ_ID}] [%c{1}] %m%n"/> 
      <Policies> 
       <SizeBasedTriggeringPolicy size="10 MB" /> 
      </Policies> 
      <DefaultRolloverStrategy max="10"/> 
     </RollingFile> 
    </Appenders> 
    <Loggers> 
     <Root level="info"> 
      <appender-ref ref="CONSOLE" /> 
      <appender-ref ref="FILE" /> 
     </Root> 
    </Loggers> 
</Configuration> 

Значение, которое filePattern не интерпретировано должным образом.

Как преодолеть это, не указывая статически каталог журнала?

Спасибо за помощь

+0

Я вижу то же самое. – andersonbd1

+0

Я врылся в источник и заметил, что filePattern обрабатывается так же, как fileName ..., а затем я понял, что я нахожусь в Windows и использовал «\» s ..., который log4j не нравится (он должен «не использовать», т). Во всяком случае, в моем случае это была * не проблема с log4j - это была проблема * my *. – andersonbd1

ответ

3

Что вы описываете очень похоже на вопрос сообщили в LOG4J2-829. Это ошибка, появившаяся в версии 2.0-RC2. Недавно он был исправлен мастером, и исправление будет включено в предстоящую версию 2.1. (Я надеюсь, что 2,1 будет выпущен некоторое время на следующей неделе - но никаких обещаний ...)

Если вы торопитесь, вы можете проверить код из Log4j2 GIT repository и build 2,1-ПАНОРАМА локально.

+2

Начался процесс выпуска версии 2.1, и команда теперь проверяет выпуск. Если нет шоу-стопов, они должны быть доступны через три дня. –

+0

см. Мой комментарий выше - это была моя ошибка - не log4j's. Я дам вам щедрость в любом случае :-) – andersonbd1

+2

Спасибо за щедрость! Я на самом деле думаю, что это проблема _is_ (и через несколько дней, _was_) log4j: если эта ошибка не была исправлена, то обычные случаи использования, такие как пути, содержащие '$ {sys: user.home}, не будут работать. Несколько человек столкнулись с этим, и я рад, что это не будет проблемой более скоро. –

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