Spring Boot的日志

https://weread.qq.com/web/reader/76332270719502d576375e1ka1d32a6022aa1d0c6e83eb4

Spring Boot 实战之旅图书:

Spring Boot使用Commons Logging进行所有内部日志记录,但保留底层日志实现。为Java UtilLogging、Log4j2和Logback提供了默认配置。每种情况下,记录器都预先配置为使用控制台输出,并且提供可选的文件输出

默认情况下,如果使用Starters,就使用Logback进行日志记录。还包括适当的Logback路由,以确保使用Java Util Logging、Commons Logging、Log4j或SLF4J的依赖库都能正常工作。

在Spring Boot框架中,默认使用的是Logback日志。接下来我们看一下Spring Boot是如何使用日志的。

 

6.1.1 Logback简介

Logback日志框架(官网地址:https://logback.qos.ch/)是由Log4j创始人开发的另一套开源日志组件。Logback的体系非常强大,提供了3个模块供开发者使用。

• logback-core:属于Logback的基础模块,是其他两个模块的基础。

• logback-classic:可以看作Log4j的改进版本,同时logback-classic自身实现了SLF4JAPI,使开发者可以在Logback框架与其他日志框架(如Log4j或java.util.logging)之间自由切换。

• logback-access:与Servlet容器(如Tomcat和Jetty)集成,以提供HTTP访问日志功能。

 

6.1.2 日志格式

 

从图6-1中可以看到,Spring的Logo部分是Spring Boot框架自带的,我们只观察日志部分。日志大致分为如下格式。

• 时间日期:显示日志打印时间,精确到毫秒。

• 日志级别:日志级别分为FATAL、ERROR、WARN、INFO、DEBUG、TRACE。

• 进程ID:进程ID指的是当前应用对应的PID。

• 分隔符:分隔符用于区分实际日志消息的开始。

• 线程名称:括在方括号中(可能会截断控制台输出)。

• 记录器名称:一般使用类名。• 日志内容:日志输出的具体内容。

 

6.1.3 控制台输出

在Spring Boot默认应用日志配置中,会将日志默认输出到控制台中。在默认情况下,只会记录ERROR-level、WARN-level和INFO-level级别的日志消息。当然,也可以指定日志级别进行日志输出,如果指定了日志级别,那么只会对应输出高于指定级别的日志信息。当然,Spring Boot默认为我们提供了调试模式(建议在开发过程中开启),启动调试模式有如下两种方式。

两种方式:

• 启动JAR模式:在启动JAR的时候通过使用--debug标志启动应用程序调试模式,如代码清单6-1所示。

• 在配置文件中的配置:在application.properties或者application.yml中配置属性debug=true。

同时,默认日志提供彩色日志输出,如果终端支持ANSI,那么在默认设置下,TRACE、DEBUG和INFO级别为绿色WARN级别为黄色,ERROR和FATAL级别为红色。

 

6.1.4 日志文件输出

默认情况下,Spring Boot只会将日志消息打印到控制台,并不会将日志写入日志文件。

在Spring Boot工程中,想要输出控制台之外的日志文件很简单,只需要在application.properties文件或application.yml文件内设置logging.filelogging.path属性即可。

• logging.file :设置日志文件,这里可以设置文件的绝对路径,也可以设置文件的相对路径,具体可以根据情况设置,如logging.file=test.log。

• logging.path :设置日志目录,在设置好目录后,会在设置目录文件夹下创建一个spring.log,如设置logging.path=/Users/dalaoyang。

上述两个属性中,如果只设置一个,那么Spring Boot应用会默认读取该配置;如果同时设置,那么只有logging.file会生效。

默认日志文件大小:10M,可以通过参数:logging.file.max-size 修改大小限制

在日志文件达到10MB的时候会自动分隔日志文件,默认情况下会记录ERROR-level、WARN-level和INFO-level消息。当然,日志文件可以通过设置logging.file.max-size属性更改大小限制,并非无法更改。

 

6.1.5 日志级别

所有受支持的日志记录系统都可以通过使用TRACE、DEBUG、INFO、WARN、ERROR、FATAL或OFF之一来在Spring中设置记录器级别,如下面几种格式。

• logging.level.root = WARN:root日志以WARN级别输出消息。

• logging.level.com.dalaoyang = DEBUG:com.dalaoyang包下的类以DEBUG级别输出。

另外,也可以设置日志组来批量设置日志级别,比如设定com.dalaoyang.controller和com.dalaoyang.service为同一组(包与包之间用英文格式的逗号分隔),如代码清单6-2所示。

代码清单6-2 Logback项目配置日志组[插图]

然后,设置dalaoyang组日志级别为TRACE,如代码清单6-3所示。

Spring Boot默认提供两个日志组,如代码清单6-4所示。

 

6.1.6 日志配置

除了上面介绍的配置属性外,其实还有很多属性供我们使用,例如:

• logging.exception-conversion-word:记录异常时使用的转换字。

• logging.file:设置日志文件。

• logging.file.max-size:最大日志文件大小。• logging.config:日志配置。• logging.file.max-history:最大归档文件数量。

• logging.path:日志文件目录。• logging.pattern.console:在控制台输出的日志模式。• logging.pattern.dateformat:日志格式内的日期格式。• logging.pattern.file:默认使用日志模式。

• logging.pattern.level:日志级别。• PID:当前进程ID。

 

6.1.7 基于XML配置日志

Spring Boot默认支持通过XML配置自定义日志格式及输出,并且在ApplicationContext创建前就已经进行了初始化。在Spring Boot默认使用的Logback中,可以通过在src/mian/resources文件夹下定义logback.xmllogback-spring.xml作为日志配置。

不过Spring Boot官方推荐优先使用带有-spring的文件名作为你的日志配置(如使用logback-spring.xml,而不是logback.xml),因为如果命名为logback-spring.xml日志配置,就可以在日志输出的时候引入一些Spring Boot特有的配置项。当然,也支持自定义日志配置,比如在application.properties或application.yml中配置logging.config=classpath:logback-config.xml,就会读取logback-config.xml配置对日志进行输出。

1. 控制台输出日志

接下来,我们改造一下日志文件格式。首先在src/mian/resources目录下创建一个logback-spring.xml,这里以输出到控制台为例,可以在配置文件中设置如下内容,如代码清单6-5所示。

在上述pattern标签中的内容都对应日志相关的信息,分别如下。

• %date:日志输出时间,也可以使用%d来表示,同时可以用{yyyy-MM-dd HH:mm:ss.SSS}的形式对日志的输出时间进行格式化。

• %thread:输出日志的进程名字。

• %-5level:日志级别,并且使用5个字符靠左对齐,也可以使用%p输出日志级别。

• %logger{80}:日志输出者的名字。

• %msg:日志消息。• %n:平台的换行符。• %c:用来在日志上输出类的全名。

这里需要注意,将编码格式设置为UTF-8,避免中文乱码。

在root标签内设置日志级别,效果等同于在配置文件中设置logging.pattern.level。

 

2. 彩色日志输出

启动项目后,可以看到日志有对应输出,但是日志并没有颜色。接下来我们修改一下配置文件,如代码清单6-6所示。

 

 

在这里需要配置几个Logback提供的彩色日志类,并使用这些对日志进行修饰。这次配置有一个不同点是,Logback配置文件可以使用property标签自定义属性,然后在下面使用${property属性name值}。在完成上述配置后,再次启动日志就可以看到彩色日志了。

3. 日志文件输出

控制台输出日志的形式一般只有开发环境这样使用,一般来说,生产环境需要将日志输出到日志文件进行日志分析,并且会将日志根据级别输出到不同日志文件中。同时,如果日志文件太大,就可以设置日志文件根据大小分隔,如代码清单6-7所示。

在上述配置中包含很多新标签,分别说明如下。

• file:日志文件位置。

• maxFileSize:设置最大日志文件大小。

• maxHistory:只保留最近30天的日志,防止日志过多占用磁盘。

• fileNamePattern:指定精确到分的日志切分方式。

• filter:标签中的level设置日志级别。

4. 输出指定包文件日志

Logback可以指定输出某个包下的类的日志,这种方式比较简单,只需要指定包路径及日志级别即可,如代码清单6-8所示。

Spring Boot使用Logback日志大致就这几种形式。当然,可以根据具体项目更加细化地配置日志文件,这里不再更多地描述了,毕竟实际业务场景不同,配置的方法也不同。

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值