• Spring Boot 日志管理


    Spring Boot 日志管理

    默认日志配置

    Spring Boot 默认已经集成了日志功能,使用的是 logback 开源日志系统。

    我们新建一个项目,运行启动类,可以清楚地看到控制台打印的日志信息。Spring Boot 日志默认级别是 INFO ,下图也输出了几条 INFO 级别的日志。

    图片描述

    Spring Boot 项目启动时控制台输出的内容

    Spring Boot 默认的日志输出内容含义如下:

    • 日期时间:精确到毫秒。
    • 日志级别:打印 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 等级别日志信息。
    • 进程 ID:当前项目进程 ID 。
    • 分隔符--- 是分隔符,分隔符后面代表具体的日志内容。
    • 线程名:方括号中间的内容表示线程名称。
    • 类名:当前日志打印所属的类名称。
    • 日志内容:开发人员设定的日志具体内容。

    日志级别控制

    通过配置文件来设置。

    实例:

    # 设置日志级别
    logging.level.root=WARN
    

    logging.level.root=WARN 中的 root 可以改为指定包名或类名,表示设置指定包或者类的日志级别。

    输出日志文件

    控制台日志保存的内容十分有限,大多数情况下我们需要将日志写入文件,便于追溯。

    可以通过配置文件指定日志文件,如下配置会将日志打印到 C:\logs\spring-boot-log.log 文件中。

    实例:

    # 设置日志文件
    logging.file=C:\logs\spring-boot-log.log                                                 
    

    也可以指定日志文件输出的目录, Spring Boot 项目会在指定输出目录下新建 spring.log 文件,并在文件中写入日志。

    实例:

    # 设置日志目录
    logging.path=C:\logs
    

    Tips:如果同时配置了 logging.fileogging.path ,则只有 logging.file 生效

    使用 lombok 插件简化日志代码

    普通情况下,如果要打印日志,需要添加一行代码 private Logger logger = LoggerFactory.getLogger(this.getClass()); 还是比较麻烦的。我们可以安装 lombok 插件,使用一个注解代替这行代码。

    image-20201022112002631

    import lombok.extern.slf4j.Slf4j;
    import org.junit.jupiter.api.Test;
    import org.springframework.boot.test.context.SpringBootTest;
    
    @SpringBootTest
    @Slf4j // 添加日志输出注解
    public class LogTest {
       // 不再需要定义 logger
       // private Logger logger = LoggerFactory.getLogger(this.getClass());
    
       @Test
       public void testPrintLog() {
          // 直接使用log输出日志
          log.trace("trace log");
          log.debug("debug log");
          log.info("info log");
          log.warn("warn log");
          log.error("error log");
       }
    }
    

    自定义日志配置

    Spring Boot 也支持自定义日志配置,可以直接采用指定日志系统的配置文件,如 logback 、 log4j 。以 logback 为例,可以直接在 application.properties 文件中指定 logback 配置文件。

    实例:

    # 指定logback配置文件,位于resources目录下
    logging.config=classpath:logback-spring.xml
    

    Tips:使用 logback 日志系统后,日志级别与日志文件等信息都可以使用 logback-spring.xml 文件设置,不再需要从 properties 文件中设置了。

    在生产环境,我们希望指定日志保存的位置,另外日志不能无限制一直保存,一般情况下保存最近 30 天左右的日志即可。这些都可以在 logback-spring.xml 文件中指定,此处给出一个完整实例供大家参考。

    实例:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- logback 配置 -->
    <configuration>
    	<!-- 输出到控制台 -->
    	<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{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -
    				%msg%n</pattern>
    		</encoder>
    	</appender>
    	<!-- 输出到文件 -->
    	<appender name="FILE"
    		class="ch.qos.logback.core.rolling.RollingFileAppender">
    		<!-- 正在打印的日志文件 -->
    		<File>C:/logs/spring-boot-log.log</File>
    		<encoder>
    			<!--格式化输出:%d表示日期;%thread表示线程名;%-5level:左对齐并固定显示5个字符;%msg:日志消息;%n:换行符; -->
    			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -
    				%msg%n
    			</pattern>
    		</encoder>
    		<!-- 日志文件的滚动策略 -->
    		<rollingPolicy
    			class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    			<!-- 日志归档 -->
    			<fileNamePattern>C:/logs/spring-boot-log-%d{yyyy-MM-dd}.log
    			</fileNamePattern>
    			<!-- 保留30天日志 -->
    			<maxHistory>30</maxHistory>
    		</rollingPolicy>
    	</appender>
    	<!-- 指定日志输出的级别 -->
    	<root level="INFO">
    		<appender-ref ref="STDOUT" />
    		<appender-ref ref="FILE" />
    	</root>
    </configuration>
    
    由于无法解释的神圣旨意,我们徒然地到处找你;你就是孤独,你就是神秘,比恒河或者日落还要遥远。。。。。。
  • 相关阅读:
    转:阅读代码
    转:三个教程
    转:C/C++程序员简历模板
    转:对于一个字节(8bit)的变量,求其二进制表示中“1”的个数
    内存偏移
    转:用C++实现的一种插件体系结构-----概述
    转:用异或实现两个数的交换的问题
    转:二级指针
    转:《链接、装载与库》里的一个错误:关于调用栈
    转:你应当如何学习C++(以及编程)(rev#1)
  • 原文地址:https://www.cnblogs.com/momoli/p/13857148.html
Copyright © 2020-2023  润新知