2016-04-15 1 views
0

Я пытаюсь добавить маршрутизацию для файлов log4j2 для входа в файлы с именем, содержащим их идентификатор процесса. Это работает с маршрутизацией и указанием кода, который вводит поиск идентификатора процесса. Тем не менее, файлы больше не архивируются правильно - каждый раз, когда я запускаю процесс, новый файл генерируется правильно с идентификатором процесса, однако ничто никогда не помещается в каталог Archive.Log4J2 с приложением маршрутизации не архивирует файлы

Также я не смог понять, как хранить в архиве максимум 5 файлов, даже если я не использую Маршрутизацию, а просто приложение RollingFile с помощью OnstartupTriggeringPolicy.

<Routing name="Routing"> 
    <Routes pattern="$${process:Id}"> 
     <Route> 
      <RollingFile name="logFile" 
       fileName="${LOG_DIR}/erdaemon-${process:Id}.log" 
       filePattern="${ARCHIVE}/erdaemon.%d{yyyy-MM-dd-hh-mm}.log"> 
       <PatternLayout pattern="${PATTERN}" /> 
       <Policies> 
        <OnStartupTriggeringPolicy /> 
       </Policies> 
      </RollingFile> 

     </Route> 
    </Routes> 
</Routing> 
<Async name="async" bufferSize="1000" includeLocation="true"> 
    <AppenderRef ref="Routing" /> 
</Async> 
</Appenders> 
<Loggers> 
    <Root level="INFO"> 
     <AppenderRef ref="async"/> 
    </Root> 
    <Logger name="testlogger" level="TRACE" additivity="false"> 
     <AppenderRef ref="async"/> 
    </Logger> 

ответ

1

OnStartupTriggeringPolicy сам по себе не может вызвать «опрокидывание», если новый процесс не происходит, чтобы иметь один и тот же идентификатор процесса предыдущего процесса. В противном случае это приведет к созданию нового файла с новым именем и даже не знает, что файл из предыдущего исполнения существует.

Я предлагаю вам создать проблему с Jira для Log4j 2, чтобы создать действие для этого.

Что касается сохранения не более 5 файлов, действие «Удалить», находящееся в версии 2.5, может сделать это, но только если есть опрокидывание, которое ваша конфигурация никогда не выполнит.

Кроме того, нет особой веской причины, по которой я могу видеть, что вы используете Маршрутизацию в своей конфигурации. Поскольку у процесса может быть только один идентификатор, у вас никогда не будет больше одного RollingFileAppender.