SpringBoot日志解析(十四)

2 篇文章 0 订阅
1 篇文章 0 订阅

1. 日志简介

                从日志框架角度来看日志分为日志实现框架和日志门面框架。实现框架主要有log4j、log4j2、JUL和Logback;日志门面框架主要JCL和slf4j。SpringBoot默认使用的式slfj+logback。

2. 日志抽象框架是如何找到日志实现框架的?

        首先在门面框架中定义一个接口LoggerFactoryBinder,所有的实现框架必须实现这个接口,而且实现类必须具有相同的类名和包路径org/slf4j/impl/StaticLoggerBinder。这样日志门面框架就可以根据该路径去寻找日志实现框架。

3. Springboot日志分析

        SpringBoot会引入一个spring-boot-starter-logging依赖,该依赖会引入logback-classic、log4j-to-slf4j和jul-to-slf4j,他们之间的依赖关系如下图所示:

4. 日志配置

  • 4.1 <configuration scan=”true” scanPeriod=”60 seconds” debug=”false” >

        - Scan: 当设置为true时,配置文件若发生改变,将会重新加载

        - ScanPeriod:扫描时间间隔,若没给出时间单位默认为毫秒

        - Debug:若设置为true,将打印出logback内部日志信息

4.2 Configuration子节点:

        - <contextName>demo</contextName>,主要用来区分不同应用程序的记录,默认为default。

        - <property name=”LOG_PATH” value=”logs”>,name变量名,value变量值。我们也可以使用这种方式去加载配置文件中的key-value值,<property resource=”application.properties”>;此外还可以使用占位符,如<property name=”LOG_PATH” value=”${logging-path:-${user.home}/${spring.application.name}/logs}”>

4.3 appender的子节点比较多,这里主要说下pattern:

        - Logger{length}:输出日志的logger名,可有一个整形参数,功能时缩短logger名。

ContextName|cn:上下文名称

        - date{pattern}:输出日志的打印时间,模式语法与java.text.SimpleDateFormat兼容

        - p|le|level:日志级别

        - M|method:输出日志的方法名

        - r|relative:从程序启动到创建日志记录的时间

        - m|msg|message:程序提供的信息

        - n:换行符

4.4 root&logger,这两个类似,root用于设置全局,logger用于应用级别的配置,它里面有个属性additivity,如果为false,就会在root中再打印一次了。

5.业务日志的分类

        我们可以使用SiftingAppender将日志根据不同的key将日志进行分类,分类的key需要使用MDC进行设置,具体流程如下图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值