默认情况下,springboot会使用logback来记录日志,并且使用INFO级别输出到控制台,在运行程序的时候,你应该看到过很多这样INFO级别的日志了。
从上图可以看到,日志输入的内容如下:
假如maven依赖中添加了spring-boot-starter-logging
:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-loggingartifactId>
dependency>
但是呢,实际开发中我们不需要直接添加该依赖。
你会发现spring-boot-starter
或者spring-boot-starter-web
其中包含了 spring-boot-starter-logging
,该依赖内容就是 Spring Boot 默认的日志框架 logback
。工程中有用到了Thymeleaf,而Thymeleaf依赖包含了spring-boot-starter
,最终我只要引入Thymeleaf即可
日志级别从低到高:
TRACE < DEBUG < INFO < WARN < ERROR < FATAL
如果设置为 WARN
,则低于 WARN
的信息都不会输出。
Spring Boot
中默认配置ERROR
、WARN
和INFO
级别的日志输出到控制台。
您还可以通过启动您的应用程序 --debug
标志来启用“调试”模式(开发的时候推荐开启),以下两种方式皆可:
--debug
标志,如:$ java -jar springTest.jar --debug
application.properties
中配置debug=true
,该属性置为true
的时候,核心Logger
(包含嵌入式容器、hibernate、spring)会输出更多内容,但是你自己应用的日志并不会输出为DEBUG
级别这里也验证了上面的观点,springboot默认把ERROR
、WARN
和INFO
级别的日志输出到控制台,
//日志的类名必须是当前类,如果不是当前类,那么输出日志的类名也是错的
private final Logger logger = LoggerFactory.getLogger(Hl13LogApplicationTests.class);
这里每一个类都需要写上面的,这样很麻烦,可以使用注解@Slf4j
,可是需要使用lombok
可以使用{}
占位符来拼接字符串,而不需要使用““+””
来连接字符串
默认情况下,springboot将日志输出到控制台,不会写到日志文件。
使用Spring Boot
喜欢在application.properties
或application.yml
配置,这样只能配置简单的场景,保存路径、日志格式等。复杂的场景(区分 info 和 error 的日志、每天产生一个日志文件等)满足不了,只能自定义配置。
# 格式化,只输出日期和内容
logging.pattern.console= "%d -%p -%m" %n
打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“\\r\\n”,Unix平台为“\\n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS},输出类似:2018年6月15日22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java: 10)
这里设置输出路径为E:\log
# 日志输出路径
logging.path= E:\\log
默认会在设置的 path
生成一个spring.log
文件。
如果要编写除控制台输出之外的日志文件,则需在application.properties
中设置logging.file
或logging.path
属性。
logging.file
,设置文件,可以是绝对路径,也可以是相对路径。如:logging.file=my.log
logging.path
,设置目录,会在该目录下创建spring.log文件,并写入日志内容,如:logging.path=E:\\log
logging.file
,会在项目的当前路径下生成一个 xxx.log
日志文件。logging.path
,在 E:\\log
文件夹生成一个日志文件为 spring.log
#这样会在当前项目下生成my.log文件
logging.file=my.log
# 这样会在指定目录生成my.log文件
# logger文件夹需要提前生成
logging.file= src\\main\\resources\\logger\\my.log
注:二者不能同时使用,如若同时使用,则只有
logging.file
生效
默认情况下,日志文件的大小达到10MB
时会切分一次,产生新的日志文件,默认级别为:ERROR、WARN、INFO
所有支持的日志记录系统都可以在Spring
环境中设置记录级别(例如在application.properties
中)
格式为:'logging.level.* = LEVEL'
logging.level
:日志级别控制前缀,*为包名或Logger名
LEVEL
:选项TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF
#com.mye.hl13log包下所有class以DEBUG级别输出
logging.level.com.mye.hl13log=DEBUG