• 《SpringBoot篇》05.超详细日志配置介绍


    陈老老老板
    说明:在整体的复习一遍知识,边复习边总结,基础真的重要,需要注意的地方都标红了,还有资源的分享. 一起加油。

    日志

    ​ 日志其实就是记录程序日常运行的信息,主要作用如下:

    • 编程期调试代码
    • 运营期记录信息
    • 记录日常运营重要信息(峰值流量、平均响应时长……)
    • 记录应用报错信息(错误堆栈)
    • 记录运维过程数据(扩容、宕机、报警……)

    1.代码中使用日志工具记录日志

    ​ 日志的使用格式非常固定,直接上操作步骤:

    步骤①:添加日志记录操作

    @RestController
    @RequestMapping("/books")
    public class BookController extends BaseClass{
        private static final Logger log = LoggerFactory.getLogger(BookController.class);
        @GetMapping
        public String getById(){
            log.debug("debug...");
            log.info("info...");
            log.warn("warn...");
            log.error("error...");
            return "springboot is running...2";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13


    注:

    可以使用lombok组件,使用@Sl4fj注解进行简化开发。
    可以看我的博客日志优化

    步骤②:设置日志输出级别

    ​ 日志设置好以后可以根据设置选择哪些参与记录。这里是根据日志的级别来设置的。日志的级别分为6种,分别是:

    • TRACE:运行堆栈信息,使用率低
    • DEBUG:程序员调试代码使用
    • INFO:记录运维过程数据
    • WARN:记录运维过程报警数据
    • ERROR:记录错误堆栈信息
    • FATAL:灾难信息,合并计入ERROR


    一般情况下,开发时候使用DEBUG,上线后使用INFO,运维信息记录使用WARN即可。
    下面就设置一下日志级别:

    # 开启debug模式,输出调试信息,常用于检查系统运行状况
    debug: true
    
    • 1
    • 2

    ​ 这么设置太简单粗暴了,日志系统通常都提供了细粒度的控制

    # 开启debug模式,输出调试信息,常用于检查系统运行状况
    debug: true
    
    # 设置日志级别,root表示根节点,即整体应用日志级别
    logging:
    	level:
        	root: debug
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    步骤③:设置日志组,控制指定包对应的日志输出级别,也可以直接控制指定包对应的日志输出级别

    logging:
    	# 设置日志组
        group:
        	# 自定义组名,设置当前组中所包含的包
            ebank: com.itheima.controller
        level:
        	root: warn
            # 为对应组设置日志级别
            ebank: debug
        	# 为对包设置日志级别
            com.itheima.controller: debug
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    总结

    1. 日志用于记录开发调试与运维过程消息

    2. 日志的级别共6种,通常使用4种即可,分别是DEBUG,INFO,WARN,ERROR

    3. 可以通过日志组或代码包的形式进行日志显示级别的控制

    4. 基于lombok提供的@Slf4j注解为类快速添加日志对象

    2.日志输出格式控制

    ​ 日志已经能够记录了,但是目前记录的格式是SpringBoot给我们提供的,如果想自定义控制就需要自己设置了。先分析一下当前日志的记录格式。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DXIGlp2j-1663131335371)(img\image-20211206123431222.png)]

    ​ 对于单条日志信息来说,日期,触发位置,记录信息是最核心的信息。级别用于做筛选过滤,PID与线程名用于做精准分析。

    logging:
      level:
        root: info
      file:
        path: ./log/${server.port}
      pattern:
        file: '%d{yyyy/MM/dd HH:mm:ss.SSS} %clr(%-5level) [%magenta(%thread)] %cyan(%logger{15}) : %msg%n'
        console: '%d{yyyy/MM/dd HH:mm:ss.SSS} %clr(%-5level) [%magenta(%thread)] %cyan(%logger{15}) : %msg%n'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    百分号格式化解释:

     %d:日期,大括号里面为日期的显示格式;
    %clr(): 根据内容显示不同颜色的的方法,一般是给“日志级别”这个信息使用的;
    %level:日志级别,百分号和关键字中间的短杠和数字(-5)表示显示这么多个字符的宽度,内容不足则补充空格占位;
    %magenta():将内容显示为品红色字体。显示为其他颜色可以参考这个图,注意看图中绿色字体;
    (%thread):线程名;
    %cyan:将内容显示为青色字体;
    %logger:事件发生的位置的所在类的全类名;
    %line:事件发生的位置的行号;
    %msg:事件信息;
    %n:换行,输出跨操作系统的换行符号;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置参数:

    logging.level.* : 作为package(包)的前缀来设置日志级别。
    logging.file :配置日志输出的文件名,也可以配置文件名的绝对路径。
    logging.path :配置日志的路径。如果没有配置logging.file,Spring Boot 将默认使用spring.log作为文件名。
    logging.pattern.console :定义console中logging的样式。
    logging.pattern.file :定义文件中日志的样式。
    logging.pattern.level :定义渲染不同级别日志的格式。默认是%5p.
    logging.exception-conversion-word :.定义当日志发生异常时的转换字
    PID :定义当前进程的ID
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    logging.level
    logging.level设置日志级别。我们可以使用TARCE , DEBUG , INFO , WARN , ERROR , FATAL , OFF 。可以使用root级别和package级别来控制日志的输入级别。创建一个具有以下依赖关系的应用程序。
    
    logging.file
    Spring Boot 默认把日志输入到console,如果我们要把日志输入到文件中,需要配置logging.file 或者logging.path属性性。logging.file属性用来定义文件名。他不仅仅可以配置文件名,也可以路径+文件名。
    
    logging.path
    配置logging.path或者logging.path属性将日志输出到文件夹中。logging.path属性用来定义日志文件路径。
    
    logging.patter.console
    通过设置logging.patter.console属性我们能改变输出到console的日志样式。日志样式包括时间,日志级别,线程名,日志名以及消息。我们可以按我们的喜好改变日志样式
    
    logging.pattern.file
    改变文件中的日志样式我们需要设置logging.pattern.file属性。首先通过logging.file或logging.path属性,把日志记录到文件中。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.日志文件

    ​ 日志不能仅显示在控制台上,要把日志记录到文件中,方便后期维护查阅。

    ​ 对于日志文件的使用存在各种各样的策略,例如每日记录,分类记录,报警后记录等。这里主要研究日志文件如何记录。

    ​ 记录日志到文件中格式非常简单,设置日志文件名即可。

    logging:
    	file:
        	name: server.log
     logging:
    	file:
        	path:D:\\log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ​ 虽然使用上述格式可以将日志记录下来了,但是面对线上的复杂情况,一个文件记录肯定是不能够满足运维要求的。
    通常会每天记录日志文件,同时为了便于维护,还要限制每个日志文件的大小。下面给出日志文件的常用配置方式:

    logging:
    	logback:
        	rollingpolicy:
            	max-file-size: 3KB
                file-name-pattern: server.%d{yyyy-MM-dd}.%i.log
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ​ 以上格式是基于logback日志技术设置每日日志文件的设置格式,要求容量到达3KB以后就转存信息到第二个文件中。文件命名规则中的%d标识日期,%i是一个递增变量,用于区分日志文件。

    总结:springboot日志配置介绍,希望对您有帮助,感谢阅读

    结束语:裸体一旦成为艺术,便是最圣洁的。道德一旦沦为虚伪,便是最下流的。
    勇敢去做你认为正确的事,不要被世俗的流言蜚语所困扰。

  • 相关阅读:
    Vue响应式数据的判断
    差分(前缀和的逆运算)
    OpenMLDB Airflow Connector:让 MLOps 工作流更自由
    PDF能编辑修改吗?教你必备的几种编辑方法
    吃透Chisel语言.30.Chisel进阶之通信状态机(二)——FSMD:以Popcount为例
    【Linux】文件
    blender 烘焙贴图
    国内IB教育发展形式如何?
    前端 CSS 经典:flex + margin 布局
    如何使用http来获取thingsbord中的设备数据
  • 原文地址:https://blog.csdn.net/weixin_47343544/article/details/126850491