web-dev-qa-db-fra.com

Spring Boot plusieurs fichiers de log

Dans mon projet de démarrage du printemps avec les classes annotées "@ Slf4j", je souhaite enregistrer certaines classes dans un fichier différent. Mais je ne savais pas comment faire ça. J'ai un fichier logback-spring.xml, référencé à partir de mon fichier de propriétés comme ceci:

logging.config= path/to/logback-spring.xml
logging.file=myCurrentLogFile.log

Dois-je créer un autre fichier logback-spring.xml maintenant? ou je peux le configurer dans le fichier courant, et si alors comment puis-je choisir quel enregistreur utiliser quand?.

8
Spring

Ajoutez juste un autre enregistreur et appender . Par exemple, j'ai utilisé le logback.xml suivant

<property name="LOGS_HOME" value="/var/applications/myProject/applogs/" />

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

<appender name="FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS_HOME}myProject_log.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${LOGS_HOME}myProject_log.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

<appender name="FILE-AUDIT" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGS_HOME}myProject_audit.log</file>
    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>
            %d{yyyy-MM-dd HH:mm:ss};%msg%n
        </Pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>${LOGS_HOME}myProject_audit.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>100MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
</appender>

<logger name="com.myCompany.myProject" level="info" additivity="false">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
</logger>

<logger name="audit-log" level="info" additivity="false">
    <appender-ref ref="FILE-AUDIT" />
    <appender-ref ref="STDOUT" />
</logger>

<root level="error">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
</root>

Dans le code, vous pouvez accéder à l'enregistreur avec:

private static Logger audit = LoggerFactory.getLogger("audit-log");

Cela obtiendra l'enregistreur audit-log et utilisera FILE-AUDIT appender.

L'appender "standart" est utilisé avec toute classe figurant dans le package spécifié:

private static Logger logger = LoggerFactory.getLogger(MyApplication.class);

Cela utilisera le <logger name="com.myCompany.myProject" level="info" additivity="false"> et bien évidemment l’appendeur FILE.

10
Evgeni Dimitrov

si vous voulez avoir deux fichiers différents, vous devez ajouter sous la balise <appender> le code suivant:

<File name="FILE-AUDIT-SUIVI" fileName="${LOGS_HOME}myProject_audit.log">
        <PatternLayout>
            <pattern>
                ${LOGS_HOME}
            </pattern>
        </PatternLayout>
    </File>

<RollingFile name="FileAppender" fileName="${LOGS_HOME}archived/myProject_audit.log"
        filePattern="${LOGS_HOME}archived/myProject_audit.%d{yyyy-MM-dd}.%i.log">
        <PatternLayout>
            <Pattern>${LOGS_HOME}</Pattern>
        </PatternLayout>
        <Policies>
            <SizeBasedTriggeringPolicy size="10MB" />
        </Policies>
        <DefaultRolloverStrategy max="1" />
    </RollingFile>
0
Sofiane