日志记录
可以参考文档:
Spring Boot 日志配置(超详细)inke的博客-CSDN博客springboot日志
什么是日志记录
记录程序的运行轨迹,方便查找关键信息,也方便快速定位解决问题
Spring Boot 使用 Commons Logging 记录所有内部日志(默认使用,因为底层直接内嵌,引入其他日志框架,要引入jar的麻烦,就直接是默认使用),但开放日志的底层实现,现在主流使用LogBack
默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台
springboot常用配置日志的框架:
java.util.logging:是JDK在1.4版本中引入的Java原生日志框架
Log4j:Apache的一个开源项目,可以控制日志信息输送的目的地是控制台、文件、GUI组件等,可以控制每一条日志的输出格式,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。虽然已经停止维护了,但目前绝大部分企业都是用的log4j。
LogBack:是Log4j的一个改良版本(最常用)
Log4j2:Log4j2已经不仅仅是Log4j的一个升级版本了,它从头到尾都被重写了(常用)
日志输出方式
控制台输出(默认)
日志文件输出(可选)
日志的作用
问题追踪:辅助排查和定位线上问题,优化程序运行性能。
状态监控:通过日志分析,可以监控系统的运行状态。
安全审计:审计主要体现在安全上,可以发现非授权的操作
日志配置
在springboot使用日志,这里可以选择springboot的默认日志格式,也可以自定义配置想要的日志。
日志配置步骤
默认日志配置
直接映入依赖(自定义日志类型则要:引入logging依赖)
安装Lombok插件
使用@Slf4J注解和log变量
配置日志文件输出内容位置
日志配置
默认日志配置情况(引入Thymeleaf依赖)
引入Thymeleaf依赖,使用默认的日志格式
实际开发中我们不需要直接添加该依赖。
你会发现spring-boot-starter其中包含了 spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框架 logback。工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter,最终我只要引入Thymeleaf即可。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
自定义日志情况(引入Logging依赖)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
安装Lombok插件
在IDEA中安装Lombok插件
使用注解配置日志
使用@Slf4J注解和log变量

配置日志文件输出位置
配置日志文件输出内容位置
#指定格式化日志内容,只输出日期和内容
logging.pattern.console="%d -%msg%n"
#指定日志输出名和位置
logging.file.path=/var/log/tomcat/sell
指定包名或类名:日志级别
#指定包名或类名:日志级别
logging.level.com.lhw.BlogApplication:debug
#dudu 包下所有class以DEBUG级别输出
logging.level.com.dudu=DEBUG:com.dudu
#root日志以WARN级别输出
logging.level.root=WARN
如果你即想完全掌控日志配置,但又不想用logback.xml作为Logback配置的名字,application.yml可以通过logging.config属性指定自定义的名字
#logging.config属性指定自定义的名字
logging.config=classpath:logging-config.xml
日志格式
SpringBoot默认日志输出格式
日期和时间 日志级别 进程 ID 日志内容 日志记录器名称 日志日志内容
2014-03-05 10:57:51.112 INFO 45469 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2014-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2014-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2014-03-05 10:57:51.702 INFO 45469 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
输出以下格式项:
日期和时间:毫秒精度,易于排序。
日志级别:ERROR、WARN、INFO、DEBUG 或 TRACE。
进程 ID。
一个 --- 分隔符,用于区分实际日志内容的开始。
线程名称:在方括号中(可能会截断控制台输出)。
日志记录器名称:这通常是源类名称(通常为缩写)。
日志内容。
日志等级
常见日志等级
日志等级可以分为5个,从低到高分别是:
DEBUG:程序调试bug时使用
INFO:程序正常运行时使用
WARNING:程序未按预期运行时使用,但并不是错误,如:用户登录密码错误
ERROR:程序出错误时使用,如:IO操作失败
CRITICAL:特别严重的问题,导致程序不能再继续运行时使用,如:磁盘空间为空,一般很少使用
默认的是WARNING等级:
当在WARNING或WARNING之上等级的才记录日志信息。
日志等级从低到高的顺序是:
DEBUG < INFO < WARNING < ERROR < CRITICAL
如果设置为 WARN ,则低于 WARN 的信息都不会输出。Spring Boot中默认配置ERROR、WARN和INFO级别的日志输出到控制台
日志输出
控制台输出日志
默认日志配置会在写入时将消息回显到控制台。默认情况下,会记录 ERROR、WARN 和 INFO 级别的日志。
开启dubug调试模式
方式一:
在运行命令后加入--debug标志
$ java -jar myapp.jar --debug
方式二:
在application.properties中配置debug=true,该属性置为true的时候,核心Logger(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG级别。
日志着色输出
如果您的终端支持 ANSI,则可以使用颜色输出来提高可读性。您可以将 spring.output.ansi.enabled 设置为受支持的值以覆盖自动检测。
可使用 %clr 转换字配置颜色编码。最简单形式是,转换器根据日志级别对输出进行着色,如下所示:
%clr(%5p)
下表描述日志级别与颜色的映射关系:
级别 颜色
FATAL 红(Red)
ERROR 红(Red)
WARN 黄(Yellow)
INFO 绿(Green)
DEBUG 绿(Green)
TRACE 绿(Green)
或者,您可以通过将其作为转换选项指定应使用的颜色或样式。例如,要将文本变为黄色,请使用以下设置:
%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}
支持以下颜色和样式:
blue
cyan
faint
green
magenta
red
yellow
日志文件输出
默认情况下,Spring Boot 仅记录到控制台,不会写入日志文件。想除了控制台输出之外还要写入日志文件,则需要设置 logging.file 或 logging.path 属性(例如,在 application.properties 中)。
下表展示了如何与 logging.* 属性一起使用:
logging.file 和 loggin.path
设定日志文件的大小
日志文件在达到 10MB 时会轮转(前会被后覆盖),并且与控制台输出一样,默认情况下会记录 ERROR、WARN 和 INFO 级别的内容。可以使用 logging.file.max-size 属性更改大小限制。除非已设置 logging.file.max-history 属性,否则以前轮转的文件将无限期归档。
日志组
将相关记录器组合在一起以便可以方便同时配置
Spring Boot 包含以下预定义的日志记录组,可以直接使用:
名称 日志记录器
web org.springframework.core.codec、org.springframework.httporg.springframework.web
sql org.springframework.jdbc.core、org.hibernate.SQL
自定义日志配置
通过在 classpath 中引入适合的库来激活各种日志记录系统,并且可以通过在 classpath 的根目录中或在以下 Spring Environment(上下文) 属性指定的位置提供合适的配置文件来进一步自定义:logging.config(日志配置文件)
各文件系统可以使用的加载文件格式
日志记录系统 文件
Logback logback-spring.xml、logback-spring.groovy、logback.xml 或者 logback.groovy
Log4j2 log4j2-spring.xml 或者 log4j2.xml
JDK(Java Util Logging) logging.properties
规范命名建议
建议您使用 -spring 的形式来配置日志记录(比如 logback-spring.xml 而不是 logback.xml)。如果使用logback.xml这种标准命名格式的配置位置,Spring 无法完全控制日志初始化。




