您的位置:

Logback-Spring.xml配置文件示例

一、Logback简介

Logback是一个功能强大的日志框架,可以替代log4j和java.utils.logging。其特点是速度最快,具有丰富的API和灵活的配置选项。Logback除了与Java编程语言集成紧密之外,还可以集成于Spring框架之上。Logback的核心组件是模块化的,可以使用适当的模块进行完全自定义的配置。此外,Logback还有许多有用的附加功能,例如日志文件压缩、数据库日志记录、灵活的上下文档案并支持异步路由和过滤器链等功能。

二、Logback的架构

Logback的架构包含三种主要的组件:Logger、Appender和Layout。Logger组件负责生成日志记录,Appender组件负责将日志记录输出到适当类型的目的地,Layout组件负责格式化日志事件的表示。

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

    <!--定义信息输出到控制台上的参数-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!-- logback 默认采用 Filter 来实现日志过滤 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level>
        </filter>
        <encoder>
            <pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %logger{36} - %msg [%file:%line]%n</pattern>
        </encoder>
    </appender>

    <!--定义信息输出到文件上的参数-->
    <appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 定义过滤器,只输出INFO级别以上的日志到文件中-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <file>logs/debug.log</file>       <!-- 日志输出路径-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/debug.%d{yyyy-MM-dd}.%i.log.zip</fileNamePattern>
            <maxHistory>30</maxHistory>   <!--log文件保留最多30个备份-->
            <totalSizeCap>5GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%-d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} [%file:%line] - %msg%n</pattern>
        </encoder>
    </appender>
    <!--定义日志记录器-->
    <logger name="com.cloudfire" level="info">
        <appender-ref ref="console" />
        <appender-ref ref="fileAppender" />
    </logger>
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="fileAppender" />
    </root>
</configuration>

三、Logback-Spring.xml配置示例

下面是一个Logback-Spring.xml配置文件示例,在这个示例中,使用了控制台和文件两个Appender,在级别为INFO的情况下,将日志记录到文件中。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml PUBLIC "-//SPRING//DTD LOGGING//EN"
        "http://www.springframework.org/dtd/spring-logging.dtd">

<configuration debug="true">

    <!--定义info日志输出到文件.-->
    <appender name="infoAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/data/logs/cm_db/cm_db-info.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/data/logs/cm_db/cm_db-info_%d{yyyyMMdd}.log.zip</fileNamePattern>
            <maxHistory>7</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--定义debug日志输出到文件.-->
    <appender name="debugAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/data/logs/cm_db/cm_db-debug.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/data/logs/cm_db/cm_db-debug_%d{yyyyMMdd}.log.zip</fileNamePattern>
            <maxHistory>7</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--定义error日志输出到文件.-->
    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/data/logs/cm_db/cm_db-error.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/data/logs/cm_db/cm_db-error_%d{yyyyMMdd}.log.zip</fileNamePattern>
            <maxHistory>7</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>50MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--定义输出格式.-->
    <!--trace<debug<info<warn<error<fatal-->
    <root level="INFO">
        <appender-ref ref="console" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="debugAppender" />
        <appender-ref ref="errorAppender" />
    </root>

</configuration>

四、如何集成Logback到Spring Boot应用

在Spring Boot应用中,需要在pom.xml中加入以下依赖:

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

之后,创建logback-spring.xml文件并放置在class path或者根目录下即可。

五、Logback与Spring框架的深度集成

在使用Spring框架时,如果想要使用Logback作为日志框架,那么你可以使用Spring Boot框架,它会自动配置Logback,使得Spring应用轻松地使用Logback。Spring Boot支持以下几种日志框架:log4j,Log4j2,JUL(java.utils.logging,Java's built-in logging framework)和Logback。Spring Boot提供了一种简单的方法来切换这些框架:替换后就可以使用一个不同的jar文件了。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

六、总结

Logback-Spring.xml配置文件是配置Logback日志框架的关键文件之一,通过Logback日志框架,可以提供强大的日志记录和管理功能,从而优化应用程序的性能。在Spring Boot框架中,使用Logback日志框架创建和管理Spring应用程序的日志,可以无缝集成Logback日志框架并提供自动配置功能,使得开发人员可以轻松地使用Logback日志框架。