2017-11-24 1 views
2

Ich bin dabei, meine Anwendung von log4j 1.2 in die Version log4j2-2.8.1 zu migrieren. Im Folgenden finden Sie die bestehende 1.x-Konfiguration in log4j.properties Datei.Migration von log4j 1.2 zu log4j2

log4j.appender.JSERRORFILE=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.JSERRORFILE.File=${log4j.loglocation}/jserror.log 
log4j.appender.JSERRORFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.JSERRORFILE.layout.ConversionPattern=%d %-5p %c - %m%n 

log4j.logger.com.app.JavascriptLogger=ERROR,JSERRORFILE 
log4j.additivity.com.app.JavascriptLogger=false 

dies äquivalent xml Konfiguration log4j2.xml Converted:

<RollingFile name="JSERRORFILE" fileName="${log-path}/jserror.log"> 
<PatternLayout pattern="%d %-5p %c - %m%n" /> 
</RollingFile> 

<Logger name="com.app.JavascriptLogger" level="ERROR" additivity="false"> 
<AppenderRef ref="JSERRORFILE"/> 
</Logger> 

Nach der Konvertierung Ich erhalte die folgende Fehlermeldung erhalten:

org.apache.logging.log4j.core.config.ConfigurationException: Arguments given for element RollingFile are invalid 

Jede Hilfe würde geschätzt.

Antwort

0

Sie müssen dem RollingFile-Appender mitteilen, wann ein Rollover (Triggerrichtlinie) und wie das Ergebnis eines Rollover aussehen soll.

Wenn Sie an einem bestimmten regelmäßigen Abständen Überroll wollen (TimeBasedTriggeringPolicy oder CronTriggeringPolicy) benötigen Sie eine filePattern enthält eine SimpleDateFormat -ähnlichen Zeichenfolge angeben. Wenn Sie einen Rollover durchführen möchten, um große Dateien zu verhindern (SizeBasedTriggeringPolicy), müssen Sie einen filePattern angeben, der %i enthält.

Das filePattern ist der relative oder absolute Pfad des Ortes, an den die alte (gerollte) Datei verschoben werden soll.

Beispiel:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="warn" name="MyApp" packages=""> 
    <Appenders> 
    <RollingFile name="RollingFile" fileName="logs/app.log" 
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> 
     <PatternLayout> 
     <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
     </PatternLayout> 
     <Policies> 
     <CronTriggeringPolicy schedule="0 0 0 * * ?"/> 
     <SizeBasedTriggeringPolicy size="250 MB"/> 
     </Policies> 
    </RollingFile> 
    </Appenders> 
    <Loggers> 
    <Root level="error"> 
     <AppenderRef ref="RollingFile"/> 
    </Root> 
    </Loggers> 
</Configuration> 

Die cron expression über Brände einmal täglich.

Für Details und weitere Beispiele siehe die RollingFile appender section des Benutzerhandbuchs.

+0

Ich würde fast immer empfehlen, die CronTriggeringPolicy als Ersatz für den DailyRollingFileAppender anstelle der TimeBasedTriggeringPolicy zu verwenden. – rgoers

+0

Das Beispiel wurde aktualisiert. Während dieser Änderung bemerkte ich ein paar Dinge. Das Log4j2 Handbuch benötigt konkrete konkrete Beispiele CronTriggeringPolicy; Cron-Ausdrücke sind nicht intuitiv. Außerdem hängt der Trigger bei TimeBased-Triggern ausschließlich vom filePattern ab. Bei Cron-Ausdrücken liegt es in der Verantwortung des Benutzers, das Dateimuster mit der Cron-Häufigkeit zu synchronisieren (und sie während der Wartung synchron zu halten). Dies muss explizit im Log4j2-Handbuch erwähnt werden. –

+0

Ich erfasste das oben in https://issues.apache.org/jira/browse/LOG4J2-2128 –

Verwandte Themen