logback日志

这篇博客讲解了在SpringBoot框架下如何配置和使用logback进行日志管理,包括在application.yml中设置日志文件名,创建logging-config.xml配置文件,以及日志的使用测试。通过配置,实现了控制台和文件的日志输出。

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

前言

本篇博客主要介绍了如何在SpringBoot框架下打印输出日志,包括控制台的日志输出,将日志输出到文件,打印输出sql语句等功能。

一、添加依赖文件

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

但是呢,实际开发中是不需要直接添加该依赖的,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。综上所述,只有你的依赖里面导入了spring-boot-starter相关依赖,就不需要导入上面的依赖了,比如说下面展示的web项目依赖。

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

二、文件配置

1.在application.yml中指定日志文件名

logging:
  config: classpath:logging-config.xml

2.在resources文件夹下面创建日志文件logging-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration  scan="true" scanPeriod="60 seconds" debug="false">
    <!--contextName标签可以用来设置logger文件名称,默认名称为“default,可以通过%contextName来打印名称-->
    <contextName>logback</contextName>
    <!--property标签的作用是用来定义变量,name是变量名,value是变量值,使用${}的格式可以在日志文件内使用变量。-->
    <property name="log.path" value="/Users/log" />

    <!--appender标签用来格式化日志输出节点,有两个属性name和classclass用来指定哪种输出策略,常用就是控制台输出策略和文件输出策略。-->
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--ThresholdFilter是系统定义的拦截器,用来过滤掉error级别以下的日志信息,不使用请注释掉,不然控制台会少一些日志。    -->
         <!--<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
             <level>DEBUG</level>
         </filter>-->
        <!--encoder标签:对日志进行编码。-->
        <encoder>
            <!-- %d{HH:mm:ss.SSS}:当前系统时间;
             %contextName:logger文件名称;
            [%thread]:输出日志的进程名字,这在Web应用以及异步任务处理中很有用;
            %-5level:日志级别;
            %logger{36}:日志输出者的名字;
            %msg:日志具体内容信息;
            %n:平台换行符; -->
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性。
         level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,不能设置为INHERITED或者同义词NULL。
         默认是DEBUG。
         可以包含零个或多个元素,标识这个appender将会添加到这个logger。 -->
    <!-- 将level值设为debug时会打印出sql语句和很多多余信息 -->
    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>


    <!-- 下面两种logger配置根据应用场景任选其一进行应用 -->
    <!-- 1.全局logger设置,所有的日志输出共用一个logger配置。 -->
    <logger name="com.lx.demo.controller" level="DEBUG"/>

    <!-- 2.在有多个controller控制层需要使用不同的日志输出级别时,可以定义多个logger来控制不同的控制层输出日志。 -->
    <!--将additivity属性值改成”true”的话,就会打印两次,因为打印信息向上级传递,logger本身打印一次,root接到后又打印一次。-->
    <!--<logger name="com.lx.demo.controller.HelloController" level="warn" additivity="false">
        <appender-ref ref="console"/>
    </logger>
    <logger name="com.lx.demo.controller.UserController" level="error" additivity="false">
        <appender-ref ref="console"/>
    </logger>-->


    <!-- 下面的logger配置方式可以扫描mapper文件夹下的所有文件,打印出sql语句。 -->
    <!-- 这里的level值一般设为dubug不会变化,只影响sql语句的打印输出,不影响日志文件的输出级别。 -->
    <logger name="com.lx.demo.mapper" level="debug" additivity="false">
        <appender-ref ref="console"/>
    </logger>

</configuration>

3.日志的使用测试

@RestController
public class HelloController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @RequestMapping("/hello")
    public String hello(){
        //日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
        logger.trace("日志输出 trace");
        logger.debug("日志输出 debug");
        logger.info("日志输出 info");
        logger.warn("日志输出 warn");
        logger.error("日志输出 error");
        return "HelloWrold!";
    }
}

控制台输出:

在这里插入图片描述
备注:这里trace级别日志没打印出来是因为在日志文件中设置了输出级别值为DUBUG。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值