2017-09-11 1 views
1

Ich muss sofort das Protokoll auf die Festplatte leeren und dann in den normalen Puffermodus schalten.Wie speichere ich einen gepufferten log4j FileAppender ohne Herunterfahren?

Die Voraussetzung ist, ich muss Stundenprotokoll erstellen. Beispiel: user_info.2017-09-08-18.log. Jeder stündliche erzeugt einen. Daher verwende ich einen ScheduledExecutorService, um eine einfache Zeichenfolge zu Beginn jeder Stunde zu protokollieren. Aber ich fand, dass, wenn der Puffer nicht voll ist, das Protokoll noch im Puffer ist. Also möchte ich sofort zu Beginn jeder Stunde ein Protokoll schreiben, stelle sicher, dass jede Stunde ein Protokoll hat. Daher ist Logger.shutdown() in dieser Situation keine geeignete Methode.

Dies ist meine Eigenschaften Definition:

log4j.appender.user_push_info=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.user_info.File=/data/log/user_info 
log4j.appender.user_info.DatePattern='.'yyyy-MM-dd-HH'.log' 
log4j.appender.user_info.layout=org.apache.log4j.PatternLayout 
log4j.appender.user_info.layout.ConversionPattern=%m%n 
log4j.appender.user_info.BufferedIO=true 
log4j.appender.user_info.BufferSize=8192 
+0

Obwohl der Betrogene ist über "beim Herunterfahren", da * sind * Antworten, die vom Herunterfahren unabhängig sind oder nicht. – Fildor

Antwort

0

Für Log4j 1.2 können Sie set immediate flush dann zu einem normalen Verhalten wieder mit:

Logger logger = Logger.getRootLogger(); 
Appender appender = logger.getAppender("name"); 
if (appender instanceof WriterAppender) { 
    ((WriterAppender) appender).setImmediateFlush(true); 
    logger.info("Flushing log"); 
    ((WriterAppender) appender).setImmediateFlush(false); 
} 
+0

Wie bekomme ich FileAppender? Ich kann Appender mit Logger.getRootLogger(). getAppender ("name") bekommen, aber es gibt keine Methode namens setImmediateFlush. –

+0

Welche Version von log4j verwenden Sie? –

+0

Kompiliergruppe: 'log4j', Name: 'log4j', Version: '1.2.17'. Es scheint, ich sollte FileAppender anstelle von Appender –

Verwandte Themen