一、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日志框架。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/270598.html
微信扫一扫
支付宝扫一扫