springboog整合篇-springboot整合logback

本文深入解析Logback日志框架,介绍其三大模块:core、classic和access,以及如何在Springboot中集成Logback,配置日志级别、输出格式和滚动策略。同时,提供示例代码展示如何通过SLF4J实现Logback日志记录。

Logback简介

logback是继log4j后的又一个日志框架,logback是springboot自带的日志框架,logback以严格的日志级别区分不同级别的日志(其他日志都是继承上一级的日志级别,例如:log4j2,log4j都是继承更高级别的日志),logback分为三个模块,logback-core,logback-classic,logback-access。

  • logback-core:logback-core是logback的核心模块,是logback-classic和的logback-access的基础。
  • logback-classic:实现了 slf4j API,配合 slf4j 使用,可以方便的切换其他日志框架。
  • logback-access:与Servlet容器(如Tomcat和Jetty)集成,提供了 HTTP 访问日志接口。

Springboot集成logback

之前说过,由于springboot自身是集成了logback,所以,在集成logback时只要springboot的自身依赖即可。

pom依赖

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

application.properties文件的配置

logging.config=classpath:logback-spring.xml

logback-spring.xml文件配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds">
    <property name="LOG_HOME" value="./WebAppLogs/logs"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n</pattern>
        </encoder>
    </appender>

    <!-- trace日志 -->
    <appender name="RollingFileTrace" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/trace.log</file>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 只接受trace级别的日志,因为logback有严格的日志区分,所以某一个分类的日志只包括该类型的日志 -->
            <level>TRACE</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/trace_%d{yyyy-MM-dd-HH}-%i.log.zip</fileNamePattern>
            <!-- 单个文件大小 -->
            <maxFileSize>10 MB</maxFileSize>
            <!--fileNamePattern的格式为yyyy-MM-dd-HH,则日志回收时间也应该与fileNamePattern相同 -->
            <maxHistory>168</maxHistory>
            <!--总得文件日志-->
            <totalSizeCap>10GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>[%d{HH:mm:ss:SSS}] - [%t] [%p] - %logger{36} - %m%n</pattern>
            <!--设置日志编码为utf-8-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- debug日志 -->
    <appender name="RollingFileDebug" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <file>${LOG_HOME}/debug.log</file>
        <filter class="ch.qos.log
1. 添加logback-spring.xml文件 在src/main/resources目录下创建一个名为logback-spring.xml的文件,将下面的代码复制并粘贴进去。 ``` <?xml version="1.0" encoding="utf-8" ?> <configuration> <!-- 确定打印的日志级别 --> <timestamp key="byDay" datePattern="yyyyMMdd" /> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern> </encoder> </appender> <!-- 输出到本地文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${LOG_PATH}/springboot2.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>${LOG_PATH}/springboot2.%d{yyyy-MM-dd}.log</fileNamePattern> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{35} -%msg%n</pattern> </encoder> </appender> <!-- root级别日志处理器 --> <root level="info"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> <!-- 配置包日级别日志处理器 --> <logger name="com.example" level="debug" additivity="false"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </logger> </configuration> ``` 2. 配置文件参数 在application.properties或application.yml文件中添加以下参数: - logging.config:指定logback-spring.xml配置文件路径,如果不指定将使用默认的日志配置。 - logging.path:指定日志文件存放路径,必须是一个相对目录。例如:logging.path=log 相当于在项目根目录下创建了一个log文件夹,日志将输出到该文件夹中。如果没有设置该参数,则日志将输出到控制台。 ``` #以配置文件的方式加载日志框架,默认使用logback-spring.xml作为配置文件 logging.config=classpath:logback-spring.xml #指定日志存放的相对路径 logging.path=log ``` 3. 在代码中使用日志输出 在需要输出日志的类中使用注入方式加载日志,在方法中使用对应的日志级别输出日志。 ``` @Component public class TestController { private static final Logger logger = LoggerFactory.getLogger(TestController.class); @RequestMapping("/test") public String test() { logger.debug("这是一条debug日志"); logger.info("这是一条info日志"); logger.warn("这是一条warn日志"); logger.error("这是一条error日志"); return "test"; } } ``` 运行项目,打开控制台或者查看日志文件,可以看到日志已经输出成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值