spring boot 特性之 Logging
【日志格式】
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: [/*]
默认格式从左至右分别为:
* 日期和时间,精确到毫秒;
* 日志级别,分为:ERROR,WARN,INFO,DEBUG 和 TRACE;
* 进程ID;
* --- 分隔符,其后为实际的日志信息;
* 线程名称;
* 日志名称:通常是简短的类名;
* 日志内容信息
NOTE: Logback 没有 FATAL 级别的日志,它被当作 ERROR 级别。
【输出到控制台】
默认的日志信息输出在控制台。级别为 ERROR,WARN 和 INFO 的信息会被打印。在启动应用时 加上 --debug 参数可以启动 DEBUG 级别的日志:
$ java -jar myapp.jar --debug
此外,也可以在 application.properties 文件中指定 debug=true 来启用 DEBUG 级别。
当启用 DEBUG 级别日志,一些核心的日志会输出更详细信息,如 Tomcat,Hibernate,SpringBoot 等,但并不会输出所有信息。
当启用 TRACE 级别日志时,输出的信息将会更加详细,除了 DEBUG 输出的内容外,还会输出整个 Spring 框架的信息。
(不同级别的信息输出配置不同颜色)
默认的日志级别配置的颜色如下所示:
* FATAL --- red
* ERROR --- red
* WARN --- yellow
* INFO --- green
* DEBUG --- green
* TRACE --- green
所有支持的颜色为:blue,cyan,faint,green,magenta,red,yellow
如果想要自定义颜色,需要设置 spring.output.ansi.enabled 为 true。
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n:换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!--myibatis log configure--> <logger name="com.apache.ibatis" level="TRACE"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <!-- 日志输出级别 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>
假如在 logback.xml 中配置如上内容,使用 %clr 转换词配置彩色输出,那么需要将 pattern 标签中的内容替换为:
<!-- 比如 --> %clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr(%logger{36}){cyan} %clr(:){faint} %msg%n
【输出到文件】
默认情况下,spring boot 日志仅仅输出到控制台,并不会写出到日志文件。如果想要输出日志文件,那么需要在 application.properties 文件中指定 logging.file 或者 logging.path 的值。
① 指定 logging.file 的值,比如 logging.file=my.log,那么日志将会生成到项目根目录下的 my.log 文件中;
② 指定 logging.path 的值,比如 logging.path=/var/log,那么日志将会生成到 /var/log 目录下的 spring.log 文件中。
注意,如果同时设置了 logging.file 和 logging.path 的值,那么 logging.path 将不会生效!
当日志文件达到 10MB 时,会产生另一个新的日志文件,文件大小的值可以通过 logging.file.max-size 指定。如果没有指定 logging.file.max-history 的值,那么日志文件将被一直保存。
NOTE:由于日志系统初始化早于 application 生命周期,因此无法通过 @PropertySource 注解加载到属性文件中日志的属性值!
【日志等级】
所有 spring boot 所支持的日志系统都可以在 spring 环境中设置日志等级。日志等级可以设置为:TRACE, DEBUG, INFO, WARN, ERROR, FATAL, 或者 OFF。比如:
logging.level.root=WARN logging.level.org.springframework.web=DEBUG logging.level.org.hibernate=ERROR
【自定义日志配置】
可以通过在 classpath 的根目录下设置配置文件或者设置 logging.config 的属性值指定具体配置文件的路径来自定义日志配置。
也可以通过设置 Java 系统属性 org.springframework.boot.logging.LoggingSystem 的值来让 spring boot 使用具体的日志系统,该属性的值为日志系统实现类的全限定名。
如果值设置为 none,会禁用 spring boot 的日志系统。
下列日志 系统,spring boot 会加载对应的日志配置文件:
如果使用 logback 日志系统(默认),推荐将配置文件命名为 logback-spring.xml 或者 logback-spring.groovy 。
【Logback日志扩展】
spring boot 对 Logback 日志做了一些扩展来实现高级配置。不过这些配置需要放在 logback-spring.xml 配置文件中,因为标准的 logback.xml 配置文件加载的时机非常早,所以无法在里面使用扩展内容。
注意,扩展的内容无法和 Logback 配置自动扫描功能同时生效,如果不小心这样做,可能会出现如下异常日志:
ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProperty], current ElementPath is [[configuration][springProperty]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:71 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
1. 特定 Profile 配置
<springProfile> 标签可以选择性的包含或排除那些基于激活的 spring porfiles 的配置片段, 这些 profile 片段只要放置于 <configuration> 标签中即可。使用 name 属性来指定使用的 profile 配置名称,name 中要指定多个 profile 名称的,使用逗号分割:
<springProfile name="staging"> <!-- 当名称为 staging 的 profile 被激活时,本段配置才会生效 --> </springProfile> <springProfile name="dev, staging"> <!-- 当名称为 dev 或 staging 的 profile 被激活时,本段配置才会生效 --> </springProfile> <springProfile name="!production"> <!-- 当名称为 production 的 profile 被未激活时,本段配置才会生效 --> </springProfile>
2. 环境属性
<springProperty> 标签使得在使用 Logback 日志时,可以直接使用 spring 环境中的属性值。比如,在 Logback 的配置中使用 application.properties 文件中的属性值。在 <springProperty> 中使用 source 来指定来自 spring 环境中的属性名称。如果这个引用的值不仅仅在本标签中,可以将 scope 属性值设置为其他(比如 context),如果指定的属性名不在 spring 环境中,那么可以通过 defaultValue 指定一个默认值:
<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>
相关推荐
spring-boot-starter-logging-1.5.4.RELEASE.jar
这个"spring-boot-logging_java_"的压缩包文件显然包含了关于Spring Boot日志记录的相关学习资料,帮助开发者理解如何在Spring Boot应用中配置和使用日志系统。 Spring Boot默认集成了多种日志框架,如Logback、Log...
Spring Boot的核心特性是自动配置。它会根据项目中的类路径和属性文件来自动配置Spring容器。例如,如果在类路径下发现`spring-boot-starter-data-jpa`,Spring Boot将自动配置JPA数据访问层。 **4. 配置文件** ...
该 POM 包含了许多有用的依赖项和配置,例如 Spring Boot auto-configuration、 logging 等。 使用 Spring Boot without the Parent POM 如果不想继承 Starter 父 POM,可以使用以下方式来使用 Spring Boot: ```...
spring-boot-starter-logging-2.2.0.RELEASE
Spring Boot Starter Web 提供了一些依赖项来开发 Web 应用程序,包括Spring - core,beans,context,aop,Web MVC - (Spring MVC),Jackson - for JSON Binding,Validation - Hibernate,Validation API,...
1. **自动配置**:Spring Boot的自动配置是其核心特性之一。在`spring-boot-autoconfigure`模块中,通过条件注解(如`@ConditionalOnClass`, `@ConditionalOnBean`等)来判断类路径中的类是否存在,进而决定是否加载...
- **Logging**:进一步探讨Spring Boot支持的日志框架及其配置方式。 综上所述,Spring Boot不仅提供了强大的框架支持,还为开发者带来了一系列便捷的功能和服务。无论是快速搭建项目还是深入理解其内部工作机制,...
- **自动配置**:Spring Boot 的核心特性之一,它根据项目中的依赖自动配置相应的 Bean。例如,如果你的项目中引入了 MySQL 数据库的驱动,Spring Boot 就会自动配置相关的数据源。 - **起步依赖**:Spring Boot ...
Spring Boot 的核心特性之一是自动配置。基于你的项目依赖,Spring Boot 将尝试自动配置相应的组件。例如,当你添加了 `spring-boot-starter-web` 依赖,Spring Boot 就会自动配置 HTTP 和 WebSocket 支持。 7. **...
9. **日志(Logging)**:Spring Boot 默认使用Logback 或 Log4j2 作为日志系统,并提供了基本的日志配置。 10. **健康检查(Actuator)**:Spring Boot Actuator 提供了一系列端点来监控和管理应用的健康状态、...
Spring4.x推荐使用Java配置,这也是Spring Boot所推荐的方式之一。Java配置主要包括三个核心注解:`@Configuration`、`@Bean` 和 `@ComponentScan`。 - `@Configuration`:作用于类上,表示这是一个配置类,可以视...
5. **Spring Boot**:为简化Spring应用的初始搭建以及开发过程,Spring Boot应运而生。它内置了Tomcat服务器,提供了默认配置,使得开发人员可以快速启动项目。 6. **Spring Data**:这个模块简化了与各种数据存储...
在实际开发中,我们可能还会涉及到Spring Boot的配置文件处理、环境变量、 Profiles切换、AOP(面向切面编程)、拦截器、过滤器等高级特性。Spring Boot也提供了强大的日志管理,我们可以使用`logging.level`配置来...
《Spring Boot Starter Logging:日志组件深度解析》 在Java开发领域,Spring Boot以其便捷的配置和快速的应用启动而备受青睐。其中,`spring-boot-starter-logging`是Spring Boot框架的重要组成部分,它为开发者...
Spring Boot的Logging配置和使用详解主要关注如何管理和定制Spring Boot应用程序的日志输出。Spring Boot默认使用Commons Logging作为内部的日志实现,并为Java Util Logging、Log4J2和Logback提供预设配置。如果...
Spring Boot的特性之一是其起步依赖,这些是Maven或Gradle的模块,可以自动配置相关的Spring功能。例如,要创建一个简单的web应用,我们可以添加`spring-boot-starter-web`依赖。这将包含Spring MVC和Tomcat,使得...
9. **日志(Logging)**:Spring Boot默认集成了Logback或Log4j2进行日志管理。 10. **测试(Testing)**:Spring Boot提供了便利的测试工具和注解,如`@SpringBootTest`,方便编写集成测试和端到端测试。 在导入...
在调试过程中,启用Spring Boot的日志可以帮助你获取更详细的错误信息,例如增加`logging.level.org.springframework.data.redis=DEBUG`来查看更详细的Redis连接日志。 在项目`springboot-movie-master`中,你可能...
Spring Boot 的核心特性之一就是自动配置,它根据项目中的依赖自动配置相关的Bean。比如,当项目包含了 `spring-boot-starter-data-jpa`,Spring Boot 将自动配置JPA和数据访问层。 3. **Starter Projects**: ...