Spring Boot 内部使用commons logging 作为日志输出工具,同时也可以配置其他的工具例如,Java Logging,Log4j2,logback。
默认情况下,如果加入了starter
,默认使用Logback输出日志。
日志格式
默认Spring Boot 输出的日志格式如下:
代码语言:javascript复制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
---
作为分割符,区别日志开始和真正日志- 线程名,使用中括号括起来
- Logger名,一般是输出日志的类名
- 日志信息
注意Logback没有FATAL级别的日志,他映射为ERROR
终端输出
默认情况下Spring Boot将日志输出到控制台,默认输出ERROR,WARN,INFO级别的日志。可以通过--debug
参数开启DEBUG级别的输出
java -jar app.jar --debug
或者是在application.properties
中设置debug=true
开启DEBUG级别的日志
当开启DEBUG级别的日志的时候,其他组件例如(内置容器,Hibernate等)都会输出DEBUG信息。
彩色输出
如果控制台支持ANSI,那么可以使用彩色输出。可以在application.properties
文件配置spring.output.ansi.enabled
设置重写自动检测。
颜色的代码又%clr
配置。例如%clr(%5p)
默认各个级别的日志的颜色
- FATAL 红色
- ERROR 红色
- WARN 黄色
- INFO 绿色
- DEBUG 绿色
- TRACE 绿色
同样也可以自己指定颜色,例如
代码语言:javascript复制%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.file
指定输出的文件名,可以是相对路径有可以是绝对路径。
logging.path
指定输出的文件目录,输出文件默认为spring.log。同样可以设置相对或者绝对路径。
默认情况下,日志超过10M就会自动进行日志rotate。可以通过设置logging.file.max-size
属性设置最大的日志文件限制。logging.file.max-history
属性可以设置最多保存多少日志,如果不设置,早期文件会被归档并不会被删除。
日志级别
日志的级别可以通过logging.level.<logger-name>=<level>
设置,例如设置root
的日志级别
logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR
配置日志
Spring Boot 日志配置如下
Environment | System Property | 解释 |
---|---|---|
logging.exception-conversion-word | LOG_EXCEPTION_CONVERSION_WORD | 记录异常是如何进行转换 |
logging.file | LOG_FILE | 配置日志文件 |
logging.file.max-size | LOG_FILE_MAX_SIZE | 日志最大容量 |
logging.file.max-history | LOG_FILE_MAX_HISTORY | 归档文件的数量 |
logging.path | LOG_PATH | log输入路径,默认暑促spring.log |
logging.pattern.console | CONSOLE_LOG_PATTERN | 输出到控制台的格式 |
logging.pattern.dateformat | LOG_DATEFORMAT_PATTERN | 输入时间格式 |
logging.pattern.file | FILE_LOG_PATTERN | 输出到文件的格式 |
logging.pattern.level | LOG_LEVEL_PATTERN | log级别 |
PID | PID | 线程ID |
Logback扩展
可以通过logback-spring.xml 对logback尽显扩展配置。因为logback.xml 加载很早,所以需要使用logback-spring.xml或者logging.config配置Spring的logback属性。
指定Spring 的Profile
可以通过 springProfile
觉得在哪个环境中使用,
<springProfile name="staging">
<!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>
<springProfile name="dev, staging">
<!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>
<springProfile name="!production">
<!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>
环境变量的属性
可以通过<springProperty>
获取Spring Environment的配置属性
<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"
defaultValue="localhost"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
<remoteHost>${fluentHost}</remoteHost>
...
</appender>