开发者学堂课程【SpringBoot 实战教程: SpringBoot 的日志管理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/651/detail/10781
SpringBoot 的日志管理
1、SpringBoot 使用的默认日志框架是 Logback,其他主流的日志框架它也支持,比如 log4j 或 log4j2 以及 java.util.loggin 等。并用 INFO 级别输出到控制台。启动,可以在控制台中看到默认都是 INFO 级别。
2、注意输出日志信息的格式,日志输出内容元素具体如下:
(1)时间日期:精确到亳秒
(2)日志级别: ERROR, WARN, INFO, DEBUG or TRACE
(3)进程 ID
(4)分隔符: -标识实际日志的开始
(5)线程名:方括号括起来(可能会截断控制台输出)
(6)Logger 名:通常使用源代码的类名
(7)日志内容
3、日志依赖:该依赖内容就是 Spring Boot 默认的日志框架 logback
<dependency>
<groupld>org.springframework. boot</groupld>
<artifactld>spring- boot-starter-logging</artifactld>
</dependency>
实际开发中我们不需要直接添加该依赖。
4、SpringBoot 的日志的级别有7个:
TRACE,DEBUG,INFO, WARN,ERROR,FATAL,0FF
日志级别从低到高为:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL< OFF。
如果设置为 WARN,则低于 WARN 的信息都不会输出。注意如果把级别设置为 INFO,比它级别低的信息是不能输出的。设置 INFO 级别,就输出 INFO 级别或者比 INFO 级别高的信息。
Spring Boot 中默认配置 ERROR 、WARN 和 INFO 级别的日志输出到控制台。
5、例如:
(1)在全局配置文件,application 中配置 logging. level. root 级别,logging. level 是前缀,#root 日志以 WARN 级别输出。
logging. level. root=WARN
(让日志只输出 warn 及以上级别的信息,像 TRACE , DEBUG, INFO 是不能输出的。)
(2)#springframework. web
日志以 DEBUG 级别输出 1bgging. level. org. springframework. web=DEBUG
,DEBUG 级别以上的也会输出。
(3)#hibernate 日志以 ERROR 级别输出 logging. level. org. hi bernate=ERROR
,error 级别以上的 fatal 和 off 都可以输出。这是输出日志的级别,只要在全局配置文件中配置即可。
(4)默认情况下,Spring Boot 将日志输出到控制台,这些日志信息没有记录到相应的日志文件中,不会写到日志文件,但是在实际的生产环境下,还是希望把日志写入文件中。如果要编写除控制台输出之外的日志文件,则需 application. properties 中设置 logging. file 或 logging. path 属性。
① logging. file,设置文件,可以是绝对路径,也可以是相对路径。file就是指定日志文件,指定路径,指定文件名,可以是相对路径,也可以是绝对路径,如:logging. file=log/my. log
(相对)或者 /1og/my. log (绝对)
② logging. path,以日志文件的路径,不需要名称,不需要文件名,设置目录,会在该目录下默认创建 spring. log 文件,并写入日志内容,如:logging
.
path
=/
var
/
log
(5)如果只配置 logging. file,会在项目的当前路径下生成一个 xxx.1og 日志文件。
(6)如果只配置 logging. path,在 /var/1og 文件夹生成一个日志文件为 spring. 1og
(7)注:二者不能同时使用,如若同时使用,则只有 logging. file 生效
默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件,默认级别为: ERROR、WARN、INFO
(8)#配置日志
logging . level. r
o
ot=WARn
设置 root 级别是 warn
logging.level.org. springframework. web=DEBUG
设置 org. springframework. web 级别输出 DEBUG 级别及以上
logging. file=e: \\springboot\\info. Log
把日志信息写入日志文件,绝对路径,在 e 盘下springboot下写入日志文件,日志文件扩展名是 log,注意 info. Log 文件会自动生成,不需要事先创建
logging. pattern. console=%d {yyyy/MM/ dd-HH :mm:ss}
如果想要指定日志的格式,默认在控制台显示日志,同时向文件中写入日志,这是配置控制台写入日志的格式
[%thread] %-5level %logger- %msg%n
logging. pattern. file=%d {yvyy/ MM/ dd-HH: mm}
这是配置文件中日志的格式
[%thread] %-5level %logger- %msg%n
把这个配置拷贝到全局配置文件中,resources 下 application.properties,启动当前程序,控制台日志,可以看到输出了很多 org. springframework. web 相关的信息,都是 DEBUG 级别的,如果有级别比它高的同样也会输出,在控制台也可以看到 info 级别的信息,并不是只输出 DEBUG,比 DEBUG 别高的也会输出。
日志文件在 e 盘-springboot 中,它自动生成 info. Log 日志文件,记事本打开,跟控制台信息一样,格式在配置文件中规定的格式,大多数是 DEBUG 级别,也有 info 级别。这就是 springboot 中默认的日志管理方式。