2016-04-15 8 views
0

Ich versuche, Routing für log4j2-Dateien hinzuzufügen, um in Dateien mit Namen mit ihrer Prozess-ID zu protokollieren. Dies funktioniert mit dem Routing und der Angabe von Code, der eine Suche nach der Prozess-ID einfügt. Die Dateien scheinen jedoch nicht mehr korrekt zu archivieren - jedes Mal, wenn ich den Prozess starte, wird eine neue Datei korrekt mit der Prozess-ID generiert, aber nichts wird jemals in das Archiv-Verzeichnis geschrieben.Log4J2 mit Routing appender archiviert keine Dateien

Auch konnte ich nicht herausfinden, wie man höchstens 5 Dateien im Archiv zu sagen, auch wenn ich nicht Routing, sondern nur RollingFile Appender mit einer 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> 

Antwort

1

OnStartupTriggeringPolicy selbst kann nicht ein „Rollover“ auslösen, es sei denn das neue Verfahren die gleiche Prozess-ID des vorherigen Verfahren haben, geschieht. Andernfalls wird eine neue Datei mit einem neuen Namen erstellt und es ist nicht einmal bekannt, dass eine Datei aus der vorherigen Ausführung existiert hat.

Ich würde vorschlagen, Sie erstellen ein Jira-Problem für Log4j 2, um eine Aktion dafür zu erstellen.

Um maximal 5 Dateien zu speichern, könnte die Delete-Aktion in Version 2.5 dies tun - aber nur, wenn es einen Rollover gibt, den Ihre Konfiguration nie wirklich ausführen wird.

Auch gibt es keinen besonders guten Grund, den ich sehen kann, dass Sie den Routing Appender in Ihrer Konfiguration verwenden. Da ein Prozess nur eine einzige ID haben kann, wird es nie mehr als einen RollingFileAppender geben.

Verwandte Themen