SpringBoot强大的日志功能

1. 简介

Spring Boot 将 Commons Logging 用于所有内部日志记录,但保留底层日志实现的开放性。为 Java Util LoggingLog4j2 和 Logback 提供了默认配置。在每种情况下,日志记录器都预先配置为使用控制台输出,也可选择文件输出。

默认情况下,如果使用 "Starters",Logback 将用于日志记录。还包括适当的 Logback 路由,以确保使用 Java Util Logging、Commons Logging、Log4J 或 SLF4J 的依赖库都能正常工作。

注意:

在众多 Java 日志框架。如果上述列表看起来很混乱,请不要担心。一般来说,你需要更改日志记录依赖关系,Spring Boot 的默认设置就可以正常工作。


2. 详细配置

2.1 日志格式

Spring Boot 的默认日志输出类似于下面的示例:

图片

五颜六色挺好看

以上日志格式输出项说明:

  • 日期和时间:精确到毫秒,易于分类。

  • 日志级别:ERROR、WARN、INFO、DEBUG 或 TRACE。

  • 进程 ID。

  • 分隔符 ---,用于区分实际日志信息的起始位置。

  • 应用程序名称:用方括号括起来(默认情况下,只有设置了 spring.application.name 时才会记录)。

  • 线程名称:用方括号括起来。

  • 记录仪名称:通常是源类名称(通常是缩写)。

  • 日志信息。

注意:

Logback 没有 FATAL 级别。它被映射为 ERROR。

如果你不想记录应用的名称,你可以通过如下配置:

logging:  include-application-name: false

图片

默认情况下,会记录 ERROR 级、WARN 级和 INFO 级信息。你可以通过下面属性进行设置启动“debug”模式:

debug: true

也可以在命令行中指定:

java -jar app.jar --debug

当然你还可以使用trace级别

trace: true

2.2 日志彩色输出

如果你的终端支持 ANSI,则日志信息会使用彩色进行输出来。可以通过如下属性配置:​​​​​​​

spring:  output:    ansi:      enabled: always

取值:DETECTALWAYSNEVER

如果你的日志没有显示颜色(eclipse),那么你需要检查下面的选项是否勾选:

图片

颜色编码通过 %clr 转换字进行配置。在最简单的形式下,转换器根据日志级别对输出进行着色,如下例所示:

%clr(%5p)

下表描述了日志级别与颜色的映射关系:

级别颜色
FATALRed
ERRORRed
WARNYellow
INFOGreen
DEBUGGreen
TRACEGreen

修改颜色​​​​​​​

logging:  pattern:    console: "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss}}){yellow} %clr(${LOG_LEVEL_PATTERN:-%5p}) ..."

在日志的日历后面添加{color}指定颜色值,支持的颜色:blue, cyan, faint, green, magenta, red, yellow。

2.3 日志文件输出

默认情况下,Spring Boot 只向控制台记录日志,不写入日志文件。如果想在控制台输出之外写入日志文件,则需要设置 logging.file.name 或 logging.file.path 属性(例如,在应用程序属性中)。如下示例:​​​​​​​

logging:  file:    name: myapp.log

这将在你项目的目录下生产myapp.log日志文件

图片

注意:如果你下面这样配置将不会达到你的预期​​​​​​​

logging:  file:    name: myapp.log    path: d:/logs/

此时并不会在你的d:/logs下生产myapp.log,而只会在当前项目的根目录下生产。

这2个属性配置不能同时配置,要使路径生效,那你只能配置logging.file.path属性并且文件名是 "spring.log"。

默认情况下,当日志文件达到 10 MB 时,日志文件会轮转,与控制台输出一样,默认情况下会记录ERROR 级、WARN 级和 INFO 级信息。

2.4 日志文件滚动Rotation

如果你使用的是 Logback,则可以使用application.properties 或application.yaml 文件对日志滚动(产生新的日志文件)设置进行微调。如下示例:​​​​​​​

logging:  logback:    rollingpolicy:      # 用于创建日志存档的文件名模式。      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz      # 是否应在应用程序启动时清理日志存档。      clean-history-on-start: false      # 日志文件存档前的最大大小。      max-file-size: 1KB      # 日志存档被删除前的最大容量。      total-size-cap: 0B      # 要保留的归档日志文件的最大数量(默认为 7)。      max-history: 7

接下来,我们反复重启服务几次后,你将看到如下的日志及归档文件

图片

2.5 日志级别

通过使用 logging.level.<logger-name>=<level>,可以在 Spring 环境(例如在 application.properties 中)中设置所有支持的日志系统的日志记录器级别,其中级别为 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF 之一。可以使用 logging.level.root 配置根日志记录器。如下示例:​​​​​​​

logging:  level:    root: info    web: debug    sql: debug    "[org.springframework.web]": "debug"    "[org.hibernate]": "debug"

当你访问Controller接口时,你将看到如下详细信息:

图片

2.6 日志分组

将相关的日志记录器分组,以便同时对它们进行配置,通常是非常有用的。如下示例:

tomcat日志进行分组​​​​​​​

logging:  group:    tomcat: "org.apache.catalina,org.apache.coyote,org.apache.tomcat"

上面我们将两个包进行划分为一组,接下来就可以对tomcat这个组进行日志级别的设置。​​​​​​​

logging:  level:    tomcat: debug

输出结果

图片

SpringBoot提供了默认的2个分组

图片

2.7 日志关闭钩子

为了在应用程序终止时释放日志资源,SpringBoot提供了一个关闭钩子,它将在 JVM 退出时触发日志系统清理。只要你的程序不是以 war 文件的形式部署,那么该关闭钩子会自动注册。如果您的应用程序具有复杂的上下文层次结构,关闭钩子可能无法满足您的需求。如果无法满足,请禁用关闭钩子,并研究底层日志系统直接提供的选项。你可以通过如下属性进行关闭钩子:​​​​​​​

logging:  register-shutdown-hook: false

2.8 自定义日志配置

可以通过在类路径上包含适当的库来激活各种日志系统,并且可以通过在类路径的根目录中或如下属性设置指定配置文件:​​​​​​​

logging:  config: logback.xml

不同的日志系统加载的配置文件,如下:

图片

官方建议:日志配置中使用 -spring 变体(例如,使用 logback-spring.xml 而不是 logback.xml)。

SpringBoot提供了如下属性配置及系统属性来定制日志:

图片

2.9 Logback扩展

Spring Boot 为 Logback 提供了许多扩展,可以帮助进行高级配置。你可以在        logback-spring.xml 配置文件中使用这些扩展。

由于标准 logback.xml 配置文件加载过早,因此无法在其中使用扩展名。您需要使用 logback-spring.xml,或定义 logging.config 属性。

特定配置文件的配置

在logback-spring.xml文件中的<springProfile> 标签,可以根据当前激活的属性进行相关的配置。如下示例:​​​​​​​

<springProfile name="prod">  <root level="ERROR">    <appender-ref ref="FILEERROR" />  </root></springProfile><springProfile name="dev">  <root level="INFO">    <appender-ref ref="CONSOLE" />  </root></springProfile>

根据spring.profiles.active属性值激活不同的<root>

环境属性

<springProperty> 标签可让你公开 Spring Environment 中的属性,以便在 Logback 中使用。如果你想在 Logback 配置中访问应用程序.properties 文件中的值,这样做会很有用。该标记的工作方式与 Logback 的标准 <property> 标记类似。不过,你指定的不是直接的值,而是属性的来源(来自环境)。如下示例:​​​​​​​

<springProperty scope="context" name="appHost" source="pack.host" defaultValue="localhost"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">  <encoder>    <!-- 日志项中引入上面定义的属性 -->    <pattern>%d{yyyy-MM-dd HH:mm} - ${appHost} - %-5level %logger Line:%-3L - %msg%n</pattern>    <charset>UTF-8</charset>  </encoder></appender>

上面示例中引用了appliation.properties或application.yml配置中的pack.host属性​​​​​​​

pack:  host: pack-host

输出结果

图片

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。它提供了许多常用的功能实现,以下是其中一些常见的功能: 1. 自动配置:Spring Boot通过自动配置机制,根据项目的依赖和配置文件,自动配置应用程序所需的各种组件和功能。 2. 简化的配置:Spring Boot采用约定大于配置的原则,通过提供默认配置和简化的配置方式,减少了开发者的配置工作量。 3. Web开发:Spring Boot提供了对Web开发的支持,包括内嵌的Servlet容器、自动配置的MVC框架、静态资源处理等。 4. 数据访问:Spring Boot集成了多种数据访问技术,如JPA、Hibernate、MyBatis等,可以方便地进行数据库操作。 5. 安全性:Spring Boot提供了安全性的解决方案,包括基于角色的访问控制、表单登录、OAuth2等。 6. 缓存:Spring Boot支持多种缓存技术,如Ehcache、Redis等,可以方便地进行缓存操作。 7. 日志管理:Spring Boot集成了常用的日志框架,如Logback、Log4j2等,可以方便地进行日志管理和配置。 8. 监控和管理:Spring Boot提供了一些监控和管理功能,如健康检查、指标收集、远程管理等。 9. 测试:Spring Boot提供了一套完整的测试框架,包括单元测试、集成测试等,可以方便地进行测试。 10. 打包和部署:Spring Boot支持将应用程序打包成可执行的JAR文件,并提供了一些部署方式,如独立运行、容器部署等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值