`
getthrough
  • 浏览: 9481 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

spring boot 特性之 Logging

阅读更多

 

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>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 14.4 KB
分享到:
评论

相关推荐

    spring-boot-starter-logging-1.5.4.RELEASE.jar

    spring-boot-starter-logging-1.5.4.RELEASE.jar

    spring-boot 所有jar包

    Spring Boot 的核心特性包括: 1. **起步依赖(Starter Dependencies)**:Spring Boot通过"起步依赖"的概念,提供了一种简单的方式来添加需要的功能。每个起步依赖都是一个Maven或Gradle的模块,包含了项目运行所...

    spring-boot-logging_java_

    这个"spring-boot-logging_java_"的压缩包文件显然包含了关于Spring Boot日志记录的相关学习资料,帮助开发者理解如何在Spring Boot应用中配置和使用日志系统。 Spring Boot默认集成了多种日志框架,如Logback、Log...

    Demo project for Spring Boot

    Spring Boot的核心特性是自动配置。它会根据项目中的类路径和属性文件来自动配置Spring容器。例如,如果在类路径下发现`spring-boot-starter-data-jpa`,Spring Boot将自动配置JPA数据访问层。 **4. 配置文件** ...

    009 maven插件spring-boot-maven-plugin

    该 POM 包含了许多有用的依赖项和配置,例如 Spring Boot auto-configuration、 logging 等。 使用 Spring Boot without the Parent POM 如果不想继承 Starter 父 POM,可以使用以下方式来使用 Spring Boot: ```...

    spring-boot-starter-logging-2.2.0.RELEASE.jar

    spring-boot-starter-logging-2.2.0.RELEASE

    spring boot经典35问

    Spring Boot Starter Web 提供了一些依赖项来开发 Web 应用程序,包括Spring - core,beans,context,aop,Web MVC - (Spring MVC),Jackson - for JSON Binding,Validation - Hibernate,Validation API,...

    spring-boot源码

    1. **自动配置**:Spring Boot的自动配置是其核心特性之一。在`spring-boot-autoconfigure`模块中,通过条件注解(如`@ConditionalOnClass`, `@ConditionalOnBean`等)来判断类路径中的类是否存在,进而决定是否加载...

    Spring Boot参考指南.pdf

    - **Logging**:进一步探讨Spring Boot支持的日志框架及其配置方式。 综上所述,Spring Boot不仅提供了强大的框架支持,还为开发者带来了一系列便捷的功能和服务。无论是快速搭建项目还是深入理解其内部工作机制,...

    Spring Boot的入门程序

    - **自动配置**:Spring Boot 的核心特性之一,它根据项目中的依赖自动配置相应的 Bean。例如,如果你的项目中引入了 MySQL 数据库的驱动,Spring Boot 就会自动配置相关的数据源。 - **起步依赖**:Spring Boot ...

    Spring Boot 初探 | 第一篇:第一个Spring Boot程序(示例程序)

    Spring Boot 的核心特性之一是自动配置。基于你的项目依赖,Spring Boot 将尝试自动配置相应的组件。例如,当你添加了 `spring-boot-starter-web` 依赖,Spring Boot 就会自动配置 HTTP 和 WebSocket 支持。 7. **...

    spring boot入门例子

    9. **日志(Logging)**:Spring Boot 默认使用Logback 或 Log4j2 作为日志系统,并提供了基本的日志配置。 10. **健康检查(Actuator)**:Spring Boot Actuator 提供了一系列端点来监控和管理应用的健康状态、...

    spring-boot学习笔记

    Spring4.x推荐使用Java配置,这也是Spring Boot所推荐的方式之一。Java配置主要包括三个核心注解:`@Configuration`、`@Bean` 和 `@ComponentScan`。 - `@Configuration`:作用于类上,表示这是一个配置类,可以视...

    spring+commons-logging

    5. **Spring Boot**:为简化Spring应用的初始搭建以及开发过程,Spring Boot应运而生。它内置了Tomcat服务器,提供了默认配置,使得开发人员可以快速启动项目。 6. **Spring Data**:这个模块简化了与各种数据存储...

    Spring Boot课件1 —— 创建和运行Spring Boot项目

    在实际开发中,我们可能还会涉及到Spring Boot的配置文件处理、环境变量、 Profiles切换、AOP(面向切面编程)、拦截器、过滤器等高级特性。Spring Boot也提供了强大的日志管理,我们可以使用`logging.level`配置来...

    spring-boot-starter-logging:日志组件

    《Spring Boot Starter Logging:日志组件深度解析》 在Java开发领域,Spring Boot以其便捷的配置和快速的应用启动而备受青睐。其中,`spring-boot-starter-logging`是Spring Boot框架的重要组成部分,它为开发者...

    spring boot Logging的配置以及使用详解

    Spring Boot的Logging配置和使用详解主要关注如何管理和定制Spring Boot应用程序的日志输出。Spring Boot默认使用Commons Logging作为内部的日志实现,并为Java Util Logging、Log4J2和Logback提供预设配置。如果...

    spring boot - hello world

    Spring Boot的特性之一是其起步依赖,这些是Maven或Gradle的模块,可以自动配置相关的Spring功能。例如,要创建一个简单的web应用,我们可以添加`spring-boot-starter-web`依赖。这将包含Spring MVC和Tomcat,使得...

    spring boot框架demo

    9. **日志(Logging)**:Spring Boot默认集成了Logback或Log4j2进行日志管理。 10. **测试(Testing)**:Spring Boot提供了便利的测试工具和注解,如`@SpringBootTest`,方便编写集成测试和端到端测试。 在导入...

    spring Boot 报错RedisConnectionFailureException

    在调试过程中,启用Spring Boot的日志可以帮助你获取更详细的错误信息,例如增加`logging.level.org.springframework.data.redis=DEBUG`来查看更详细的Redis连接日志。 在项目`springboot-movie-master`中,你可能...

Global site tag (gtag.js) - Google Analytics