以spring官方文档为基础,官方地址:Spring Boot
目前官方正式版本最新为:2.5.6(这个学习笔记系列基本是以翻译为主,不用浪费时间期望获取更多。更多是给自己看官方文档做的的一个笔记)
当前篇的内容:介绍官方文档2.5.6的第七章之SpringApplication特性_日志
参考文章有:1. SpringBoot官方文档 2. SpringBoot之Logging
不同的日志框架,默认的配置文件名称不太。
通常情况下,日志是由一个抽象层+实现层的组合来搭建的。抽象层有:JCL、SLF4J、jboss-logging,实现层有jul、log4j、log4j2、logback。而SpringBoot选择SLF4J+Logback的组合。
当我们使用其他框架时,框架自身可能也带着自己的日志框架。可以选择在pom文件对应框架中排除掉(exclusion)
而如果想切换SpringBoot的默认日志框架,需要先排除starter中的Logback依赖以及Log4J替换包的依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除对于Logback的依赖-->
<exclusions>
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
<!-- 排除对于Log4j的替换包依赖 -->
<exclusion>
<artifactId>log4j-to-slf4j</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
并且引入SLF4J对于Log4j的适配包
<!-- 增加SLF4J对于Log4J的是适配器依赖 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
2019-03-05 10:57:51.112 INFO 45469 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-03-05 10:57:51.253 INFO 45469 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1358 ms
2019-03-05 10:57:51.698 INFO 45469 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2019-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。
进程标识。
一个—分离器来区分实际日志消息的开始。
线程名称:括在方括号中(可能会被截断以用于控制台输出)。
记录器名称:这通常是源类名称(通常缩写)。
日志消息。
默认情况下,Spring Boot 只记录到控制台,不写入日志文件。如果你想在控制台输出之外写入日志文件,你需要设置一个logging.file.name或者logging.file.path属性(例如在application.properties中配置)。如果不特殊设置,输出的文件日志级别也是INFO。
logging.file.path和logging.file.name不同时存在,同时存在以logging.file.name为主。
# 生成到指定路径,日志名称spring.log。
logging.file.path=output/logs
# 不指定的情况下默认生成在项目根目录(也可指定绝对路径),日志名称随意起
logging.file.name=myLog.log
所有支持的日志系统都可以通过Spring Environment来指定日志级别,例如application.properties,可以使用“logging.level.*=LEVEL”来指定日志的级别,"LEVEL"的取值可以是TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF。配置示例如下:
#root日志以WARN级别输出
logging.level.root=WARN
#org.springframework.web包下的日志以DEBUG级别输出
logging.level.org.springframework.web=DEBUG
#org.hibernate包下的日志以ERROR级别输出
logging.level.org.hibernate=ERROR
如果,我们需要指定我们的应用日志级别了,我们也可以使用同样的方式,如下(com.example为包名):
logging.level.com.example=INFO
可以通过logging.pattern.file以及logging.pattern.level来配置我们需要的日志输出格式,例如(只针对logback):
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
<springProfile name="staging">
<!-- 当profile名为staging时,当前日志配置会启用 -->
</springProfile>
<springProfile name="dev | staging">
<!-- 当profile名为dev或staging时,当前日志配置会启用 -->
</springProfile>
<springProfile name="!production">
<!-- 当profile名不为production时,当前日志配置会启用 -->
</springProfile>