SpringBoot日志框架之使用logback作为日志框架

向右看齐 2022-12-20 11:08 286阅读 0赞

一、前言

1-1、slf4j log4j logback 的区别

可以理解成slf4j相当于List,而log4j相当于arrayList,logback相当于linkedList。也就是slf4j是一个日志接口,具体日志实现交给其它的框架。

1-2、为什么要使用logback来实现日志呢

log4j和logback都是出自一个人之手,而且logback是后面出来的,它各方面性能更好,所以我们新的项目可以直接使用logback。

SpringBoot默认使用的日志框架就是logback,我们在SpringBoot的pom文件里面可以找这样一句话
在这里插入图片描述

二、使用

虽然SpringBoot默认是使用logBack作为日志框架的,但是我们还是需要引入pom。

  1. <dependency>
  2. <groupId>org.codehaus.janino</groupId>
  3. <artifactId>janino</artifactId>
  4. <version>2.6.1</version>
  5. </dependency>

2-1、引入配置文件

在这里插入图片描述
从上面的图中可以看出,它的配置文件加载顺序。

以上几个配置文件我们都不使用,我们使用logback-spring.xml,为什么要使用这个呢。因为它的加载顺序如下

  1. logback.xml > application.yml/application.properties > logback-spring.xml

为了固定这个xml配置文件,我们可以在这个配置文件里面去读取application的配置,这样我们只需要修改application文件就好了,而logback.xml的加载顺序是在application之前所以会读取不到。

2-2、logback-spring.xml配置

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
  3. <!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
  4. <!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
  5. <!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
  6. <!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
  7. <!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
  8. <configuration debug="false" scan="false" scanPeriod="30 minutes">
  9. <!-- 引入配置文件 <property resource="application.properties" /> <property resource="application-${spring.profiles.active:-prod}.properties" /> -->
  10. <springProperty name="app.name" source="app.name" defaultValue="amnesia" />
  11. <!-- 日志记录级别 -->
  12. <springProperty name="logback_level" source="logback.level.log" defaultValue="DEBUG" />
  13. <!-- SQL日志级别,只有DEBUG级别才打印sql -->
  14. <springProperty name="logback_level_sql" source="logback.level.sql" defaultValue="WARN" />
  15. <!-- 是否输出日志到文件 -->
  16. <springProperty name="logback_rolling" source="logback.rolling" defaultValue="true" />
  17. <!-- 设置日志输出目录 -->
  18. <springProperty name="logback_rolling_path" source="logback.rolling.path" defaultValue="logs" />
  19. <!-- 日志文件最大大小 -->
  20. <springProperty name="logback_max_file_size" source="logback.max_file_size" defaultValue="10MB" />
  21. <!-- 格式化输出:%d:表示日期,%thread:表示线程名,%-5level:级别从左显示5个字符宽度, %logger:日志输出者的名字(通常是所在类的全名),%L:输出代码中的行号,%msg:日志消息,%n:换行符 -->
  22. <property name="logback_pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger %L -| %msg%n" />
  23. <if condition='p("logback_rolling").equals("true")'>
  24. <then>
  25. <!-- 滚动记录文件 -->
  26. <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  27. <file>${logback_rolling_path}/${app.name}.log</file>
  28. <!-- rollingPolicy:当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名 -->
  29. <!-- TimeBasedRollingPolicy:最常用的滚动策略,它根据时间来制定滚动策略 -->
  30. <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
  31. <!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
  32. <fileNamePattern>${logback_rolling_path}/${app.name}.%d{yyyy-MM-dd}.%i.log
  33. </fileNamePattern>
  34. <!-- 日志文件的保存期限为30天 -->
  35. <maxHistory>30</maxHistory>
  36. <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
  37. <!-- maxFileSize:这是活动文件的大小,默认值是10MB -->
  38. <maxFileSize>${logback_max_file_size}</maxFileSize>
  39. </timeBasedFileNamingAndTriggeringPolicy>
  40. </rollingPolicy>
  41. <encoder>
  42. <pattern>${logback_pattern}</pattern>
  43. <charset>UTF-8</charset>
  44. </encoder>
  45. </appender>
  46. <root>
  47. <appender-ref ref="FILE" />
  48. </root>
  49. </then>
  50. </if>
  51. <!-- 将日志打印到控制台 -->
  52. <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  53. <encoder>
  54. <pattern>${logback_pattern}</pattern>
  55. </encoder>
  56. </appender>
  57. <root level="${logback_level}">
  58. <appender-ref ref="CONSOLE" />
  59. </root>
  60. <logger name="org.springframework.context.annotation.ConfigurationClassPostProcessor" level="ERROR" />
  61. <logger name="com.xdx.mapper" level="${logback_level_sql}" additivity="false">
  62. <appender-ref ref="CONSOLE" />
  63. </logger>
  64. <contextName>${app.name}</contextName>
  65. </configuration>

2-3、视频讲解

SpringBoot胡咧咧,文件上传、Excel、HttpClient、日志、异常

https://www.bilibili.com/video/BV1kf4y1i761?p=8

发表评论

表情:
评论列表 (有 0 条评论,286人围观)

还没有评论,来说两句吧...

相关阅读