Springboot使用logback

文章目录

目录

文章目录

前言

一、添加依赖

二、使用步骤

[三 、测试使用](#三 、测试使用)

总结



前言

Logback 是log4j 框架的作者开发的新一代日志框架,它效率更高、能够适应诸多的运行环境,同时天然支持 SLF4J。

Logback 的定制性更加灵活,同时也是 SpringBoot 的内置日志框架。


一、添加依赖

复制代码
<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-web</artifactId></dependency>

二、使用步骤

在配置文件中 修改配置

java 复制代码
# 日志配置
logging:
  level:
    root: info
    com.wise: info
    org.springframework: info
    com.baomidou.mybatisplus: info 
  config: classpath:logback.xml

在同级目录下的日志模板文件 logback.xml

java 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="log.path" value="./logs"/>
    <property name="console.log.pattern"
              value="%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(${PID:-}) - %green([%-21thread]) %cyan(%-35logger{30}) %msg%n" />
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${console.log.pattern}</pattern>
            <charset>utf-8</charset>
        </encoder>
    </appender>
    <!-- 文件输出 -->
    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <!-- 过滤的级别 -->
      <level>INFO</level>
      <!-- 匹配时的操作:接收(记录) -->
      <onMatch>ACCEPT</onMatch>
      <!-- 不匹配时的操作:拒绝(不记录) -->
      <onMismatch>DENY</onMismatch>
    </filter>
    <file>${log.path}/sys-info.log</file>
    <!-- 循环政策:基于时间创建日志文件 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- 日志文件名格式 -->
      <fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>20KB</totalSizeCap>
      <maxFileSize>10KB</maxFileSize>
      <!-- appender启动时,进行一次日志文件清理(作用:有些存活很短时间的应用,没机会进行文件清理) -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
  </appender>
  <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <!-- 过滤的级别 -->
      <level>ERROR</level>
      <!-- 匹配时的操作:接收(记录) -->
      <onMatch>ACCEPT</onMatch>
      <!-- 不匹配时的操作:拒绝(不记录) -->
      <onMismatch>DENY</onMismatch>
    </filter>
    <file>${log.path}/sys-error.log</file>
    <!-- 循环政策:基于时间创建日志文件 -->
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- 日志文件名格式 -->
      <fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>20KB</totalSizeCap>
      <maxFileSize>10KB</maxFileSize>
      <!-- appender启动时,进行一次日志文件清理(作用:有些存活很短时间的应用,没机会进行文件清理) -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
  </appender>
  <!-- 系统日志输出 -->
  <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">    
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
      <!-- 过滤的级别 -->
      <level>DEBUG</level>
    </filter>
    <file>${log.path}/sys-debug.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/sys-debug.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>20KB</totalSizeCap>
      <maxFileSize>10KB</maxFileSize>
      <!-- appender启动时,进行一次日志文件清理(作用:有些存活很短时间的应用,没机会进行文件清理) -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
    <encoder>
      <pattern>${log.pattern}</pattern>
    </encoder>
  </appender>  
  <!-- 用户访问日志输出  -->
    <appender name="sys_user" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/sys_user.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
      <maxHistory>30</maxHistory>
      <totalSizeCap>20KB</totalSizeCap>
      <maxFileSize>10KB</maxFileSize>
      <!-- appender启动时,进行一次日志文件清理(作用:有些存活很短时间的应用,没机会进行文件清理) -->
      <cleanHistoryOnStart>true</cleanHistoryOnStart>
    </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console"/>
    </root>

    <!--系统操作日志-->
    <root level="error">
        <appender-ref ref="file_error"/>
    </root>

    <!--系统操作日志-->
    <root level="info">
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>

    <!--系统操作日志-->
    <root level="debug">
        <appender-ref ref="file_debug"/>
        <appender-ref ref="file_info"/>
        <appender-ref ref="file_error"/>
    </root>    
    <!--系统用户操作日志-->
    <logger name="sys_user" level="info">
        <appender-ref ref="sys_user"/>
    </logger>
</configuration>

三 、测试使用

java 复制代码
在需要日志记录的类上添加该注解@Slf4j,然后直接使用下面的就能打印日志了

    log.info("这是一条测试info日志");
    log.warn("这是一条测试info日志:{}", "warn");
   
    log.error("这是一条测试info日志", e);

总结

相关推荐
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ6 天前
日志打印配置:logback-spring.xml配置;info和error完全区分了,并且按时间拆分了
xml·spring·logback
啥都不懂的小小白11 天前
Java日志篇3:Logback 配置全解析与生产环境最佳实践
java·开发语言·logback
diudiu962811 天前
Logback使用指南
java·开发语言·spring boot·后端·spring·logback
netyeaxi12 天前
SpringBoot:SpringBoot2.7.x如何将logback升级到1.3.x以上版本
java·spring boot·logback
Andy工程师14 天前
logback-spring.xml优先级更高
xml·spring·logback
qq 87622396515 天前
Labview 与欧姆龙 PLC 的 Ethernetip TCP 网口通讯:CIP 通讯的魅力
logback
聊天QQ:2769988516 天前
基于LCL滤波器的单相光伏逆变器控制设计的MATLAB/Simulink仿真
logback
z***D64819 天前
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
xml·spring·logback
DJ斯特拉20 天前
日志技术Logback
java·前端·logback
槁***耿21 天前
后端在文件存储中的架构设计
tomcat·logback·turbopack