Springboot配置logback

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot配置logback相关的知识,希望对你有一定的参考价值。

参考技术A 因为logback其他配置尚好理解,本文只说明比较少用,但是却起关键作用的两个子节点。

1、依赖:

实际开发中我们不需要直接添加该依赖,你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,Spring Boot为我们提供了很多默认的日志配置,所以,只要将spring-boot-starter-logging作为依赖加入到当前应用的classpath,则“开箱即用”。

2、日记的等级

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

3、配置

这里对日志框架的支持有两种配置方式,一般来讲我们倘若不是要较复杂的需求,可以直接在 application.yml 配置文件配置下即可:

application.properties 或  application.yml (系统层面)

参考网站: https://www.cnblogs.com/nuccch/p/6221255.html

logback-spring.xml                               (自定义文件方式)

参考网站: http://tengj.top/2017/04/05/springboot7/

4、彩色打印

参考: https://my.oschina.net/360yg/blog/1810625

5、@Slf4j注解

安装lombok插件,在需要打印的类名上加上该注解即可

替代下面语句的编写

private Loggerlogger = LoggerFactory.getLogger(this.getClass());

6、打印不出json的问题

不是打印不出而是正确的要加一个占位符 ,如下

log.info("hospital", JSON.toJSONString(hospitalEntity2));

7、log存放文件路径定义

最关键的两个节点,你可以理解之前的property、appender嵌套property只是一些定义好的变量,真正定义方法怎么去运用这些变量是这两个节点所要做的。

1、子节点--<root>

root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性,不区分大小写,默认是DEBUG。

可以包含零个或多个元素,标识这个appender将会添加到这个 loger (理解root为一个全局的loger)。

举例子:

上图这是我定义好的文件输出的appender节点,对应下图的<appender-ref>节点,ref对应<appender>的name属性,上面说到<root>节点好比一个方法,所以现在这个方法的意思是全局打印等级为INFO,而且四个<appender>变量都执行,即正常的控制台输出和warn、info、error的三个文件输出,可以到对应的控制台和日志文件里面看到的确有日志。反之倘若我们level定为Debug,或者去除name为“WARN”的<appender>则是输出Debug以上等级的日志,WARN.log日志文件也不会再有日志打印进去。

2、子节点--<loger>

<loger>用来设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender>,也就是只管辖指定的区域的日志输出规则。<loger>仅有一个name属性,一个可选的level和一个可选的addtivity属性。

注意:这里说的上级就是root节点

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

level :用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。如果未设置此属性,那么当前loger将会继承上级的级别。

addtivity :是否向上级loger传递打印信息。默认是true。

举例子:

控制com.dudu.controller.LearnController类的日志打印,打印级别为“WARN”;

additivity属性为false,表示此loger的打印信息不再向上级传递;

指定了名字为“console”的appender;

这时候执行com.dudu.controller.LearnController类的login方法时,先执行<logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">,

将级别为“WARN”及大于“WARN”的日志信息交给此loger指定的名为“console”的appender处理,在控制台中打出日志,不再向上级root传递打印信息。

注意:

当然如果你把additivity=”false”改成additivity=”true”的话,就会打印两次,因为打印信息向上级传递,logger本身打印一次,root接到后又打印一次。

四、配合多环境

据不同环境(prod:生产环境,test:测试环境,dev:开发环境)来定义不同的日志输出,在 logback-spring.xml中使用 springProfile 节点来定义,方法如下:

文件名称不是logback.xml,想使用spring扩展profile支持,要以logback-spring.xml命名

可以启动服务的时候指定 profile (如不指定使用默认),如指定prod 的方式为:

java -jar xxx.jar –spring.profiles.active=prod

关于多环境配置可以参考

Spring Boot干货系列:(二)配置文件解析

SpringBoot日志logback配置

参考技术A

在前一个项目simple-boot-demo项目中配置日志相关。

SpringBoot日志依赖为: spring-boot-starter-logging ,不过对于web项目,已经引入了 spring-boot-starter-web ,默认已经自带了日志的 spring-boot-starter-logging ,已经默认引入了 logback 实现,只需要配置application.yml即可。

Spring内部使用 Commons Logging ,SpringBoot项目日志实现可以用log4j2,logback,JDK (Java Util Logging)等。

参考文档:

https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/howto.html#howto-logging

https://docs.spring.io/spring-boot/docs/2.2.6.RELEASE/reference/html/spring-boot-features.html#boot-features-logging

level是个map,配置不同的日志名称的级别,一般情况下都是配置些包名称就可以了,因为一般都是用类名作为日志名称,常见写法如下:

默认配置下只会在控制台输出日志,没有文件日志,可以配置文件名来控制文件输出。

日志文件配置:

日志配置示例:

另外一些文件日志配置如下,主要配置文件大小分隔、历史记录、输出格式等,这些配置在IDE中都有提示输入:

注意:这些配置在使用自定义的配置文件 logging.config=classpath:logback-spring.xml 时,如果include引入sping-boot项目中的logback配置xml片段,这些application.yml中的配置也是有效的,而且level配置还是优先于配置文件

日志可以分组配置,针对部分日志名称定义一个分组,可以统一配置此分组的级别:

SpringBoot内置的日志分组:

SpringBoot如果要使用自定义的logback作为日志实现,需要编写logback.xml,但是引入logback之后,logback会自动查找logback.xml,因此不能把名字定义为logback.xml,否则可能早于SpringBoot初始化,造成一些配置无效问题。

使用 logback-spring.xml 或者使用 loging.config 来指定配置文件(默认名字为 logback-spring.xml 的文件springboot会自动获取到,自定义名字需要手动配置):

在spring-boot项目的jar包中,spring为了简化配置,已经在项目中内置了一些logback的配置片段,方便使用include方式引入,打开可以看到内容是用 <included></include> 包裹,因此自定义配置文件 logback.xml 的时候直接include即可。

配置片段路径: org/springframework/boot/logging/logback/

典型 logback.xml 配置文件如下,其中引用了spring-boot提供的xml片段:

上面的配置是文件取名为 demo-logback.xml ,方便引入。

配置application.yml:

以上是关于Springboot配置logback的主要内容,如果未能解决你的问题,请参考以下文章

springboot配置文件总结

springboot配置文件注解

SpringBoot——SpringBoot入门SpringBoot的自动配置配置文件和开发小技巧

springboot指定配置文件运行

SpringBoot SpringBoot 配置

springboot自动配置