Configuration logback

Configuration logback

Exemple simple

Utilisation en Java avec SLF4J

 1public class Slf4jExample {
 2
 3    private static final Logger LOGGER = LoggerFactory.getLogger(Slf4jExample.class);
 4
 5    public static void main(String[] args) {
 6        LOGGER.debug("Debug log message");
 7        LOGGER.info("Info log message");
 8        LOGGER.error("Error log message");
 9    }
10}

Configuration simple sur la console

 1<configuration>
 2
 3    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 4        <layout class="ch.qos.logback.classic.PatternLayout">
 5            <Pattern>
 6                %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
 7            </Pattern>
 8        </layout>
 9    </appender>
10
11    <logger name="com.mkyong" level="debug" additivity="false">
12        <appender-ref ref="CONSOLE"/>
13    </logger>
14
15    <root level="error">
16        <appender-ref ref="CONSOLE"/>
17    </root>
18
19</configuration>

Configuration en reprenant le pattern de spring boot

 1<?xml version="1.0" encoding="UTF-8"?>
 2<configuration scan="true">
 3    <!-- use Spring default values -->
 4    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>
 5
 6    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 7        <encoder>
 8            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
 9            <charset>utf8</charset>
10        </encoder>
11    </appender>
1213</configuration>

Séparation de certains log dans un fichier séparé

Pour mettre les logs dans un fichier séparé :

 1<?xml version="1.0"?>
 2<configuration>
 3    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
 4        <file>logfile.log</file>
 5        <append>true</append>
 6        <encoder>
 7            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
 8        </encoder>
 9    </appender>
10    <appender name="ANALYTICS-FILE" class="ch.qos.logback.core.FileAppender">
11        <file>analytics.log</file>
12        <append>true</append>
13        <encoder>
14            <pattern>%-4relative [%thread] %-5level %logger{35} - %msg %n</pattern>
15        </encoder>
16    </appender>
17    <!-- additivity=false ensures analytics data only goes to the analytics log -->
18    <logger name="analytics" level="DEBUG" additivity="false">
19        <appender-ref ref="ANALYTICS-FILE"/>
20    </logger>
21    <root>
22        <appender-ref ref="FILE"/>
23    </root>
24</configuration>

Pour l'utiliser

1Logger analytics = LoggerFactory.getLogger("analytics");

Pour indiquer ou se trouve le fichier de log

1-Dlogging.config=file:///your/file/location/logback.xml

Configuration d'un appender dans un fichier avec rollback

 1<configuration>
 2  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 3    <file>logFile.log</file>
 4    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
 5      <!-- daily rollover -->
 6      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
 7
 8      <!-- keep 30 days' worth of history capped at 3GB total size -->
 9      <maxHistory>30</maxHistory>
10      <totalSizeCap>3GB</totalSizeCap>
11
12    </rollingPolicy>
13
14    <encoder>
15      <pattern>%-4relative [%thread] %-5level %logger{35} -%kvp- %msg%n</pattern>
16    </encoder>
17  </appender> 
18
19  <root level="DEBUG">
20    <appender-ref ref="FILE" />
21  </root>
22</configuration>

syntaxe des pattern

La documentation est ici

  • %X{ABC} : pour afficher un MDC. Si le {} n'est pas présent, c'est pour le MDC qui est affiché
  • ${PID} : le pid du processus. C'est spécifique à Spring Boot