Spring Boot:整合Logback日志

本文介绍了如何在SpringBoot应用中启用和自定义Logback日志框架,包括引入依赖、使用Slf4j和LoggerFactory注解、以及配置logback.xml以管理不同级别的日志输出和归档策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日志功能是系统的基础功能,日志功能方便我们输出想要的内容到控制台,或者输出到磁盘,尤其是异常日志输出,日志可以按天归档,按天或大小切分,Spring Boot本身内置日志功能。

Spring Boot内部使用Commons Logging日志输出,以保证兼容各种日志框架实现,如Java Util LoggingLog4J2Logback。如果使用 spring-boot-starter,Logback将作为默认日志框架引入,当然你可以根据需要替换其他框架。

开始使用

引入spring-boot-starter

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

查看详情

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-logging</artifactId>
	<version>2.4.4</version>
	<scope>compile</scope>
</dependency>

再查看详情

<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.2.3</version>
	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>org.apache.logging.log4j</groupId>
	<artifactId>log4j-to-slf4j</artifactId>
	<version>2.13.3</version>
	<scope>compile</scope>
</dependency>

<dependency>
	<groupId>org.slf4j</groupId>
	<artifactId>jul-to-slf4j</artifactId>
	<version>1.7.30</version>
	<scope>compile</scope>
</dependency>

输出日志

Logback支持SLF4J(Simple Logging Facade for Java是一个日志门面框架,提供了日志系统中常用的接口),Spring封装了注解,使用非常简单。

方法一:使用Slf2j注解

@Slf4j
public class Spring2goUpmsApplication {
  
  public static void main(String[] args) {        
    		SpringApplication.run(Spring2goUpmsApplication.class, args);
            STDOUT();
  }  
  private static void STDOUT() {
    // Slf4j注解
    log.trace("Slf4j trace");
    log.debug("Slf4j debug");
    log.warn("Slf4j warn");
    log.info("Slf4j info");
    log.error("Slf4j error");
  }
}

方法二:使用LoggerFactory

 

public class Spring2goUpmsApplication {
  
  public static void main(String[] args) {
    SpringApplication.run(Spring2goUpmsApplication.class, args);
    STDOUT();
  }
  
  private final static Logger logger = LoggerFactory.getLogger(Spring2goUpmsApplication.class);
  
  private static void STDOUT() {
    //LoggerFactory
    logger.trace("LoggerFactory trace"); 
    logger.debug("LoggerFactory debug");
    logger.warn("LoggerFactory warn"); 
    logger.info("LoggerFactory info");
    logger.error("LoggerFactory error");
  } 
}

自定义配置

根据不同的日志系统,可以使用下列的默认配置名称,Spring Boot启动是将自动扫描加载。

日志系统

配置文件

Logback

logback-spring.xml, logback-spring.groovy, logback.xml, or logback.groovy

Log4j2

log4j2-spring.xml or log4j2.xml

JDK (Java Util Logging)

logging.properties

创建对应的配置文件,放在resource文件夹下即可,当然也可以通过logging.file.name和logging.file.path指定对应的配置文件。

注意:

Spring官方建议优先使用-spring结尾命名的xml文件。

以下为常用的logback.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 日志存放路径 -->
   <property name="log.path" value="logs/spring2go" />
   <!-- 日志输出格式 -->
   <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />


    <!-- 控制台输出 -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>${log.pattern}</pattern>
      </encoder>
   </appender>


    <!-- 系统日志输出 -->
   <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${log.path}/info.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
      <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
         <fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</maxHistory>
      </rollingPolicy>
      <encoder>
         <pattern>${log.pattern}</pattern>
      </encoder>
      <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>INFO</level>
            <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
            <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
   </appender>


    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <file>${log.path}/error.log</file>
        <!-- 循环政策:基于时间创建日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志文件名格式 -->
            <fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
         <!-- 日志最大的历史 60天 -->
         <maxHistory>60</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>${log.pattern}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 过滤的级别 -->
            <level>ERROR</level>
         <!-- 匹配时的操作:接收(记录) -->
            <onMatch>ACCEPT</onMatch>
         <!-- 不匹配时的操作:拒绝(不记录) -->
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>


    <!-- 系统模块日志级别控制  -->
   <logger name="com.spring2go" level="info" />
   <!-- Spring日志级别控制  -->
   <logger name="org.springframework" level="warn" />


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

上述配置文件定义的日志输出的规则,如存放位置,格式和存储等,具体配置含义请参考官网:https://logback.qos.ch/manual/index.html。

 

参考资料

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值