springboot项目配置logback日志系统的实现

2025-05-29 0 58

记录springboot项目配置logback日志文件管理:

logback依赖jar包

SpringBoot项目配置logback理论上需要添加logback-classic依赖jar包:

  1. <dependency>
  2. <groupId>ch.qos.logback</groupId>
  3. <artifactId>logback-classic</artifactId>
  4. <version>1.2.3</version>
  5. </dependency>

但是因为SpringBoot项目默认就是使用的就是logback日志系统,创建SpringBoot项目时引入的spring-boot-starter或者spring-boot-starter-web依赖jar包中已经包含了spring-boot-starter-logging的依赖,里面同时包含多种日志系统依赖,如下图所示:

springboot项目配置logback日志系统的实现

包括logback和log4j,所以,无需额外添加依赖,直接配置logback.xml就可以了。

此外,如果需要切换为log4j2,那么需要在spring-boot-starter-web依赖中排除springboot自带的commons‐logging,然后在引入log4j2的依赖jar包,如下所示:

  1. <!–排除 commons‐logging–>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-web</artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>commons‐logging</groupId>
  8. <artifactId>commons‐logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12. <!–引入log4j2 –>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-log4j2</artifactId>
  16. </dependency>

logback的默认配置

前面说到SpringBoot项目默认使用logback,那么对于logback的配置情况,SpringBoot又是如何定义的呢?

首先,SpringBoot会从resource包下查找logback-test.xmllogback.xml ,如果这两个都不存在,则会调用BasicConfigurator,创建一个最小化的基本配置。

最小化配置由一个关联到根loggerConsoleAppender组成,默认输出模式为%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%nroot logger级别为DEBUG,所以并不会生成日志文件,只会输出到控制台。

创建logback.xml配置文件

通过自定义logback.xml配置文件来控制日志输出情况,通常我们会配置三个日志组件:

  • 控制台输出
  • 输出info级别日志文件
  • 输出error级别日志文件

以下为logback.xml完整配置

  1. <!– Logback configuration. See http://logback.qos.ch/manual/index.html –>
  2. <configuration scan="true" scanPeriod="2 seconds">
  3. <!–定义日志文件的存储地址–>
  4. <property name="LOG_PATH" value="./logs" />
  5. <!– 控制台输出 –>
  6. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  7. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  8. <!–格式化输出:%d表示日期,%-5level:级别从左显示5个字符宽度,%t表示线程名,%msg:日志消息,%n是换行符–>
  9. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} — [%t] %logger{50} – %msg%n</pattern>
  10. </encoder>
  11. </appender>
  12. <!– info级别日志文件输出 –>
  13. <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  14. <!– 日志文件输出的文件名 –>
  15. <File>${LOG_PATH}/info.log</File>
  16. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  17. <!– 每日生成日志文件或日志文件大小超出限制后输出的文件名模板 –>
  18. <fileNamePattern>${LOG_PATH}/info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  19. <!– 日志文件保留天数 –>
  20. <maxHistory>30</maxHistory>
  21. <!– 日志文件最大大小:100MB –>
  22. <maxFileSize>100MB</maxFileSize>
  23. </rollingPolicy>
  24. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  25. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} — [%t] %logger{50} – %msg%n</pattern>
  26. </encoder>
  27. </appender>
  28. <!– error级别日志文件输出 –>
  29. <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
  30. <!– 日志输出级别,优先级 > '<root level>' –>
  31. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  32. <level>ERROR</level>
  33. </filter>
  34. <File>${LOG_PATH}/error.log</File>
  35. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  36. <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  37. <maxHistory>30</maxHistory>
  38. <maxFileSize>100MB</maxFileSize>
  39. </rollingPolicy>
  40. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  41. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} — [%t] %logger{50} – %msg%n</pattern>
  42. </encoder>
  43. </appender>
  44. <!– 默认日志输出级别 –>
  45. <root level="INFO">
  46. <appender-ref ref="STDOUT" />
  47. <appender-ref ref="INFO_FILE" />
  48. <appender-ref ref="ERROR_FILE" />
  49. </root>
  50. </configuration>

logback配置说明

根节点configuration

  1. <configuration scan="true" scanPeriod="2 seconds" debug="false">
  2. </configuration>

configuration包含以下三个属性:

  • scan:配置文件发生更改时,进行重载,默认值为true
  • scanPeriod:监测配置文件是否有修改的时间间隔,默认值为6000,默认单位为毫秒
  • debug:打印logback内部日志信息,实时查看logback运行状态,默认值为false

子节点property:

  1. <property name="LOG_PATH" value="./logs" />

用来定义变量值,包含以下两个属性

  • name:变量名称
  • value:变量定义的值

通过property定义的值会被插入到logger上下文中,可以使${}来使用变量,这里定义了log的保存位置根目录。

子节点appender:

  1. <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
  2. </appender>

是负责写日志的组件,通过自定义日志组件控制日志输出的情况,包含以下两个属性:

  • name:组件名称
  • class:组件class指定的类名

不同的class,对应不同的功能:

ch.qos.logback.core.ConsoleAppender会把日志输出到控制台

ch.qos.logback.core.rolling.RollingFileAppender把日志内容输出到指定文件

File节点:日志文件输出的文件名

  1. <File>${LOG_PATH}/info.log</File>

filter节点:过滤器,用来指定日志组件的日志输出级别,优先级高于root节点的level。

  1. <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
  2. <level>ERROR</level>
  3. </filter>

rollingPolicy节点:

滚动日志文件配置,涉及日志文件的移动和重命名,只有一个class属性,用来指定滚动策略,这里使用的是ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy

包含以下三个属性:

  • fileNamePattern:发生滚动时的日志命名方式
  • maxHistory:日志文件的最大保留时间,超过设定时间后会自动删除
  • maxFileSize:每份日志文件的最大限制,超出限制后会重新生成,并将旧的日志文件按照fileNamePattern设定的日志命名方式进行命名
  1. <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
  2. <fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
  3. <maxHistory>30</maxHistory>
  4. <maxFileSize>100MB</maxFileSize>
  5. </rollingPolicy>

子节点encoder

  1. <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
  2. <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} — [%t] %logger{50} – %msg%n</pattern>
  3. </encoder>

对记录事件进行格式化,负责两件事,一是把日志信息转换成字节数组,二是把字节数组写入到输出流。
PatternLayoutEncoder 是唯一有用的且默认的encoder ,有一个

节点,用来设置日志的输入格式。使用“%”加“转换符”方式,如果要输出“%”,则必须用“\\”对“%”进行转义。

子节点root

loger,是所有loger的最上级,且只有一个level节点,用类设置打印日志的级别,默认值为debug,通常设置为info,此外还有trace、warn、error、all、off级别。
子节点appender-ref的ref属性指定日志组件名称,即appendername属性值。

使用logback

yml文件中增加logging.config指定配置文件地址,命名为logback时可以不需要配置,SpringBoot`会自动查找。

level设置指定路径下的日志输出级别。

  1. logging:
  2. config: classpath:logback.xml
  3. level:
  4. com:
  5. springboot: debug

如图所示,项目启动后,访问接口输出日志内容并生成指定日志文件:

springboot项目配置logback日志系统的实现

内容参考

博客园-ryelqy-logback的使用和logback.xml详解

到此这篇关于springboot项目配置logback日志系统的实现的文章就介绍到这了,更多相关springboot配置logback日志系统内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!

原文链接:https://www.cnblogs.com/dandelion200/p/14673985.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 springboot项目配置logback日志系统的实现 https://www.kuaiidc.com/104448.html

相关文章

发表评论
暂无评论