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的配置。