2017-09-20 1 views
1

Ich verwende https://logback.qos.ch/ für ein lang laufendes Java-Programm. Gibt es eine Möglichkeit, einen Appender so zu konfigurieren, dass nur die ersten N Zeilen eines Programms protokolliert werden?Nur erste N-Zeilen mit Logback protokollieren

Zum Beispiel protokolliert mein Programm wichtige Informationen beim Start, aber wenn ich eine rollende Datei Appender verwenden, werden die Protokolle beim Start schließlich gelöscht.

Ich fand, wie dies in log4j zu tun wie folgt:

<appender name="StartupAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${samza.log.dir}/${samza.container.name}-startup.log" /> 
    <param name="MaxFileSize" value="256MB" /> 
    <param name="MaxBackupIndex" value="1" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n" /> 
    </layout> 
</appender> 
<logger name="STARTUP_LOGGER" additivity="false"> 
    <level value="info" /> 
    <appender-ref ref="StartupAppender"/> 
</logger> 

Wie mache ich das in Logback?

Antwort

1

Es gibt keine Dosen, vorbestehenden Logback appender, die „nur erste N Zeilen mit Logback Log“ ich würde vorschlagen, dass Sie Logback bestehenden Implementierungen von rollingPolicy und triggeringPolicy verwenden, um eine Logback Konfiguration zu erstellen, die die Konfiguration übereinstimmt Sie hatte Arbeiten in Log4J.

Das Logback Äquivalent des StartupAppender in Ihrer Frage ist:

<appender name="StartupAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${samza.log.dir}/${samza.container.name}-startup.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>${samza.log.dir}/${samza.container.name}-startup.log.%i.log</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>1</maxIndex> 
    </rollingPolicy> 

    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>256MB</maxFileSize> 
    </triggeringPolicy> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} [%p] %m%n</pattern> 
    </encoder> 
</appender> 

<logger name="STARTUP_LOGGER" additivity="false"> 
    <level value="info" /> 
    <appender-ref ref="StartupAppender"/> 
</logger> 

Dies wird die gleiche wie Ihr Log4J StartupAppender verhalten, aber einfach so appender ist es nicht die „erste N Zeilen eines Programms halten garantiert "Da es bei Erreichen von 256 MB Rollover wird. Da Sie diesen Appender jedoch nur mit dem Logger verknüpfen: STARTUP_LOGGER, ist es wahrscheinlich, dass 256 MB mehr als genug Platz sind, um eine lange Historie von 'Startup Logs' zu speichern.

Verwandte Themen