2017-09-20 1 views
1

J'utilise https://logback.qos.ch/ pour un programme Java de longue durée. Existe-t-il un moyen de configurer un appender pour qu'il enregistre uniquement les N premières lignes d'un programme? Par exemple, mon programme enregistre des informations importantes au démarrage, mais si j'utilise un appendeur de fichiers, les journaux au démarrage sont finalement supprimés.Consigner uniquement les premières lignes N avec le retour

J'ai trouvé comment faire cela dans log4j comme suit:

<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> 

Comment puis-je faire en Logback?

Répondre

1

Il n'y a pas en conserve, préexistante Logback appender qui « lignes Log seulement le premier N avec Logback » Je vous suggère d'utiliser les implémentations existantes de Logback de rollingPolicy et triggeringPolicy pour créer une configuration Logback qui correspond à la configuration que vous aviez travaillant dans Log4J.

L'équivalent Logback du StartupAppender dans votre question est:

<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> 

Cela se comportera de la même chose que votre Log4J StartupAppender mais comme ça appender n'est pas garanti de conserver les « premières lignes N d'un programme "car il va se renverser en atteignant 256MB. Cependant, puisque vous n'associez cet appender qu'à l'enregistreur: STARTUP_LOGGER, il semble probable que 256 Mo serait plus que suffisant pour conserver un long historique de 'logs de démarrage'.