Spring Boot 整合 Logback 日志(springboot整合log4j)

  本篇文章为你整理了Spring Boot 整合 Logback 日志(springboot整合log4j)的详细内容,包含有springboot集成logback springboot整合log4j springboot整合日志框架 springboot整合log4j2 Spring Boot 整合 Logback 日志,希望能帮助你了解 Spring Boot 整合 Logback 日志。

  Spring Boot 支持 Java Util Logging,Log4J,Log4J2 和 Logback 等日志框架,默认采用 Logback 日志。

  在实际 Spring Boot 项目中使用 Spring Boot 默认日志配置是不能够满足实际生产及开发需求的,需要选定适合的日志输出框架,灵活调整日志输出级别、日志输出格式等。

  此处主要讲述如何进行 Spring Boot 项目的 Logback 默认日志详细配置。

  强烈建议使用默认的 Logback 日志配置,因为它比 log4j 性能好很多!

  
首先,官方推荐使用的 xml 名字的格式为:logback-spring.xml 而不是 logback.xml,至于为什么,因为带 spring 后缀的可以使用 springProfile 这个标签(PS:这个标签用于切换“开发环境”和“生产环境”)。

  下面配置可看情况自行修改!

  本文配置参考:传送门

  

 ?xml version="1.0" encoding="UTF-8" ? 

 

   scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true

   scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位默认单位是毫秒,当scan为true时此属性生效,默认时间间隔为1分钟

   debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态,默认值为false

   configuration scan="true" scanPeriod="2 seconds"

   定义滚动记录文件appender 作用:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件

   RollingFileAppender 参数:

   append :如果是true日志被追加到文件结尾,如果是false清空现存文件,默认是true

   file :被写入的文件名,可以是相对目录也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值

   rollingPolicy :当发生滚动时,决定RollingFileAppender的行为,涉及文件移动和重命名

   triggeringPolicy :告知RollingFileAppender合适激活滚动

   prudent :当为true时不支持FixedWindowRollingPolicy支持TimeBasedRollingPolicy,但是有两个限制:1不支持也不允许文件压缩,2不能设置file属性必须留空

   appender name="fileAppender"

   !-- 如果是true,日志被追加到文件结尾,如果是false,清空现存文件.默认是true --

   prudent true /prudent

   rollingPolicy

   !-- 每天滚动一次的日志 只保留30天内的日志文件 --

   fileNamePattern logs/%d{yyyy-MM-dd}/springboot_%i.log /fileNamePattern

   maxHistory 30 /maxHistory

   timeBasedFileNamingAndTriggeringPolicy

   maxFileSize 10MB /maxFileSize

   /timeBasedFileNamingAndTriggeringPolicy

   /rollingPolicy

   encoder

   !-- 对日志进行格式化 --

   pattern %date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n /pattern

   charset utf-8 /charset

   /encoder

   /appender

   appender name="errorAppender"

   prudent true /prudent

   rollingPolicy

   fileNamePattern logs/%d{yyyy-MM-dd}/springboot-error_%i.log /fileNamePattern

   maxHistory 30 /maxHistory

   timeBasedFileNamingAndTriggeringPolicy

   maxFileSize 10MB /maxFileSize

   /timeBasedFileNamingAndTriggeringPolicy

   /rollingPolicy

   encoder

   pattern %date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n /pattern

   charset utf-8 /charset

   /encoder

   配置日志级别过滤器 作用:根据日志级别进行过滤,如果日志级别等于配置级别过滤器会根据onMath和onMismatch接收或拒绝日志

   level :设置过滤级别

   onMatch :用于配置符合过滤条件的操作

   onMismatch :用于配置不符合过滤条件的操作

   此处配置为只接收ERROR日志级别信息

   filter

   level ERROR /level

   onMatch ACCEPT /onMatch

   onMismatch DENY /onMismatch

   /filter

   /appender

   !-- 定义控制台appender 作用:把日志输出到控制台 --

   appender name="console"

   layout

   pattern %date %level [%thread] %logger{10}.%class{0}#%method[%file:%line] %n%msg%n /pattern

   /layout

   /appender

   !-- 将root的打印级别设置为"error",指定了名字为"console","fileAppender","errorAppender"的appender --

   root level="error"

   appender-ref ref="console"/

   appender-ref ref="fileAppender"/

   appender-ref ref="errorAppender"/

   /root

   logger用来设置某一个包的日志打印级别

   loger 仅有一个name属性,一个可选的level和一个可选的addtivity属性

   name:用来指定受此loger约束的某一个包或者具体的某一个类

   level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF

   addtivity:是否向上级loger传递打印信息。默认是true,会将信息输入到root配置指定的地方,可以包含多个appender-ref,标识这个appender会添加到这个logger

   logger name="com.xcbeyond.springboot" level="debug"/

   /configuration

  

 

  
直接在需要使用日志打印的类上添加 lombok 的注解 @Slf4j 即可!

  PS:注意需要添加 Lombok 依赖!

  

 !-- lombok -- 

 

   dependency

   groupId org.projectlombok /groupId

   artifactId lombok /artifactId

   optional true /optional

   /dependency

  

 

  示例:

  

@SpringBootTest

 

  @Slf4j

  class RedisMysqlDemoApplicationTests {

   @Test

   void contextLoads() {

   // 日志级别从低到高分为 TRACE DEBUG INFO WARN ERROR FATAL

   log.trace("================ trace =================");

   log.debug("================ debug =================");

   log.info("================ info =================");

   log.warn("================ warn =================");

   log.error("================ error =================");

  

 

  
PS:注意 Logger 和 LoggerFactory 导的哪个包!

  

import org.junit.jupiter.api.Test;

 

  import org.slf4j.Logger;

  import org.slf4j.LoggerFactory;

  import org.springframework.boot.test.context.SpringBootTest;

  @SpringBootTest

  class RedisMysqlDemoApplicationTests {

   private static final Logger log = LoggerFactory.getLogger(RedisMysqlDemoApplicationTests.class);

   @Test

   void contextLoads() {

   // 日志级别从低到高分为 TRACE DEBUG INFO WARN ERROR FATAL

   log.trace("================ trace =================");

   log.debug("================ debug =================");

   log.info("================ info =================");

   log.warn("================ warn =================");

   log.error("================ error =================");

  

 

  以上就是Spring Boot 整合 Logback 日志(springboot整合log4j)的详细内容,想要了解更多 Spring Boot 整合 Logback 日志的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: