Spring Boot 日志配置
Spring Boot 使用Commons Logging作为内部日志记录。对Java Util Logging, Log4J2 and Logback. 提供了默认的配置。默认情况下在控制台输出也可以配置输出到文件中。默认使用Logback作为日志记录。
1.日志格式
Spring Boot 默认输出的日志格式如下:
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: [/*]
(1)日期和时间 - 精确到毫秒,且易于排序。
(2)日志级别 - ERROR, WARN, INFO, DEBUG 或 TRACE。
(3)Process ID。
(4)一个用于区分实际日志信息开头的---分隔符。
(5)线程名 - 包括在方括号中(控制台输出可能会被截断)。
(6)日志名 - 通常是源class的类名(缩写)。
(7)日志信息。
2.输出到控制台
默认的日志配置将日志输出到控制台中。可以通过命令行开启DeBug模式,例如:
java -jar myapp.jar --debug
也可以在application.properties增加属性debug=true,效果一样,如果看过前面的文章的话,应该知道优先级。
3.输出为彩色
在application.properties文件中设置:spring.output.ansi.enabled设置即可,spring.output.ansi.enabled有三个值:
(1)NEVER : 从不使用
建议使用)
(3)ALWAYS :总是使用,如果终端不支持的话,会出现一些特殊字符。
4.输出到文件中
输出到文件只需要在application.properties文件中设置logging.file或者logging.path。下面是官方给出的组合使用表:
logging.file | logging.path | 示例 | 描述 |
(none) | (none) | ||
指定具体文件 | (none) | my.log | 写到特定的日志文件里,名称可以是一个精确的位置或相对于当前目录 |
(none) | 指定具体路径 | /var/log | 写到特定文件夹下的spring.log里,名称可以是一个精确的位置或相对于当前目录 |
5.设置日志级别
在application.properties文件设置:logging.level,例如:
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
6.自定义配置
Spring Boot 会根据当前使用的日志类别来自动加载以下配置:
Logger System | 加载文件 |
Logback | logback-spring.xml, logback-spring.groovy, logback.xml or logback.groovy |
Log4j2 | log4j2-spring.xml or log4j2.xml |
JDK (Java Util Logging) | logging.properties |
注意:logback-spring.xml与logback.xml的区别,使用logback-spring.xml的话,是可以使用Spring profile的支持,而logback.xml是不可以使用的。
例如配置多环境日志,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml" />
<logger name="org.springframework" level="DEBUG"/>
<!-- 开发环境 -->
<springProfile name="dev">
<logger name="org.springframework" level="INFO"/>
</springProfile>
<!-- 生产环境 -->
<springProfile name="prod">
<logger name="org.springframework" level="ERROR"/>
</springProfile>
</configuration>
以上的意思:配置了org.springframework默认级别为:DEBUG,在开发环境下修改为INFO级别,在生产环境下为ERROR级别
具体内容就不叙述了,请参照logback或者log4j的配置。