简体   繁体   中英

Configuring Logback with Spring Boot

I'm using Logback for log management in a Spring Boot application, how i need these specifications:

  • Logging everything to a file
  • Logging important things to the console
  • Using a Rolling policy with 10MB as max file size

I used this logback.xml configuration file and it worked pretty good:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

    <property name="DEV_HOME" value="logging"/>
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover. Make sure the path matches the one in the file element or else
             the rollover logs are placed in the working directory. -->
            <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <charset>UTF-8</charset>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="FILE"/>
    </root>
    <root level="INFO">
        <appender-ref ref="consoleAppender" />
    </root>
</configuration>

If you are not going to using spring extension for logback, all what you need to do is defining a logback.xml (or logback.groovy ) and putting it into classpath .

A rollback appender can be defined as:

appender("FILE", RollingFileAppender) {
    file = "root.log"
    encoder(PatternLayoutEncoder) {
        pattern = "%date %level [%thread] %logger{10} [%file:%line] %msg%n"
    }
    rollingPolicy(TimeBasedRollingPolicy) {
        fileNamePattern = "root-%d{yyyy-MM-dd}.log"
        maxHistory = 7
    }
}

This is in groovy and it's a time based rollback appender. You can google for more examples.

If you are going to using spring extension, please see here .

This alternative contains a Redis appender:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

    <property name="DEV_HOME" value="logs"/>

    <!--appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashAccessTcpSocketAppender">
        <destination>127.0.0.1:4560</destination>

        <waitStrategyType>sleeping</waitStrategyType>
        <includeCallerInfo>true</includeCallerInfo>
        <encoder class="net.logstash.logback.encoder.LogstashAccessEncoder" >
            <timeZone>UTC+1</timeZone>
        </encoder>
    </appender-->

    <appender name="REDIS" class="com.cwbase.logback.RedisAppender">
        <host>localhost</host>
        <port>6379</port>
        <key>fouras-logs</key>
        <type>fouras-log</type>
        <database>12</database>
        <sourceHost>localhost</sourceHost>
        <source>fouras</source>
    </appender>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>[%d{yyyy-MM-dd HH:mm:ss:SSS} %thread %-5level %logger{1000} - %msg]%n</Pattern>
        </encoder>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${DEV_HOME}/debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- daily rollover. Make sure the path matches the one in the file element or else
             the rollover logs are placed in the working directory. -->
            <fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>5MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- keep 30 days' worth of history -->
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder>
            <charset>UTF-8</charset>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS} %thread %-5level %logger{1000} - %msg]%n</pattern>
        </encoder>
    </appender>

    <logger name="com.datcom.fouras" level="TRACE">
        <appender-ref ref="REDIS"/>
        <!--appender-ref ref="LOGSTASH"/-->
    </logger>
    <root level="DEBUG">
        <appender-ref ref="FILE"/>
    </root>
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <!--appender-ref ref="REDIS"/-->
    </root>
</configuration>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM