Spring Boot日志输出(概述)

春天启动的日志输出(概述)我阅读了以下官方文档进行了翻译。
26. 日志记录
请注意,如何指南已将Spring Boot的日志输出(如何指南)整理在一起。

26. 记录

在Spring Boot中,所有内部日志都使用Commons Logging进行记录,但是基本的日志实现部分是由开发者自行决定的。默认情况下,Java Util Logging、Log4J、Log4J2和Logback都可以使用。这意味着这些都是可用的。此外,无论使用哪个日志框架,都可以预先配置它们可以将日志输出到控制台和任意文件中。在默认设置中,如果使用Starter POM,则采用Logback作为日志框架。如果希望使用除了Logback之外的其他框架,只需更改相关依赖即可。

26.1. 日志格式

在默认设置中,(使用Logback进行)日志输出格式如下。

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(LogbackはログレベルFATALを持たないのでERRORにマッピングされる)

プロセスID

プロセスID

実際のログメッセージの開始を区別するためのセパレータ

スレッド名

コンソール出力のため切り捨てられる可能性があるので括弧で囲まれている

ロガー名

通常はクラス名となりしばしば略記される

ログメッセージ

26.2. 控制台输出

默认的日志设置是将日志输出到控制台,并且会输出ERROR、WARN和INFO级别的日志。然而,通过在应用程序启动时加上–debug参数,可以实现输出DEBUG级别的日志。

$ java -jar myapp.jar --debug

而且,即使在application.properties中明确指定了debug=true,在DEBUG级别下也可以输出日志。通过启用DEBUG级别的日志输出设置,可以输出嵌入式容器、Hibernate、Spring等核心模块的更多信息。但要注意,启用DEBUG模式并不意味着应用程序的所有日志都会以DEBUG级别输出。

26.2.1. 关于日志输出的颜色区分。

如果终端支持ANSI,可以通过在日志中添加颜色来提高可读性。另外,还可以通过设置”spring.output.ansi.enabled”来覆盖自动检测到的支持的值。颜色设置可以使用”%clr”,例如如下所示。

%clr(%5p)

日志级别和颜色的映射如下所示。

ログレベル色FATAL赤ERROR赤WARN黄INFO緑DEBUG緑TRACE緑

而且,还可以根据需要进行任意颜色和样式的更改(以下示例为更改为黄色)。

%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}

此外,支持的颜色包括蓝色、青绿色、苍白色(什么颜色?)、绿色、洋红色、红色、黄色。

26.3. 文件输出

如前所述,Spring Boot默认只支持控制台输出,不支持文件输出。如果想要同时进行控制台输出和文件输出,需要在application.properties中添加”logging.file”或”logging.path”属性。如下表所示,可以使用loggin.*属性以及其他属性一起使用。

logging.filelogging.path例説明なしなし
コンソール出力のみ特定のファイルなしmy.log指定したログファイルに出力される。ファイル名はカレントディレクトへの絶対パス、相対パスで表現できる。なし特定のディレクトリ/var/log指定したディレクトリへspring.logという名前で出力される。ファイル名はカレントディレクトへの絶対パス、相対パスで表現できる。

当日志文件达到10MB时,会进行轮转,同时默认记录并在控制台输出ERROR、WARN和INFO级别的日志。日志系统在应用程序生命周期的早期阶段进行初始化,并在通过@PropertySource注解加载的属性文件中找不到此类日志属性。日志属性是独立于日志基础设施的,因此Spring Boot不会管理特定配置的键(如Logback的配置文件等)。

26.4.日志级别

在Spring Boot中支持的所有日志系统都可以通过使用‘logging.level.*=LEVEL’在Spring环境中(例如application.properties等)设置日志级别。
※ LEVEL可以选择TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF之一,可以使用logging.level.root来设置根日志记录器。
※以下是application.properties的示例设置.

logging.level.root=WARN
logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

Spring Boot默认会将Thymeleaf的INFO级别日志重新映射至DEBUG级别进行输出。这有助于减少标准日志输出中的噪声。如果要将重新映射设置为配置项,请参考LevelRemappingAppender。

26.5. 自定义日志设置

通过包含类路径上适当的库,各种日志记录系统可以被启用。此外,通过将适当的配置文件放置在类路径的根目录或Spring环境中明确指定的logging.config中,可以进行自定义。由于日志记录是在创建ApplicationContext之前初始化的,因此无法通过Spring配置文件中的PropertySource来控制日志记录。系统属性和传统的Spring Boot外部配置可以正常工作。根据使用的日志记录系统,将加载以下文件。

ロギングシステムカスタム化Logbacklogback-spring.xml, logback-spring.groovy, logback.xml or logback.groovyLog4jlog4j-spring.properties, log4j-spring.xml, log4j.properties or log4j.xmlLog4j2log4j2-spring.xml or log4j2.xmlJDK (Java Util Logging)logging.properties

如果可能的话,建议在日志设置中使用-spring变体(例如logback-spring.xml而不是logback.xml)。如果使用标准配置位置,Spring无法完全控制日志初始化。在使用Java Util Logging时,已知有类加载器问题,可能会在从可执行jar启动时引发问题,因此最好避免使用它。

还有一些Spring属性可以作为系统属性使用,这对于定制非常有用。

Springプロパティシステムプロパティ備考logging.exception-conversion-wordLOG_EXCEPTION_CONVERSION_WORD例外をログに記録する場合に使用される変換語logging.fileLOG_FILEデフォルトのログ設定が定義されている場合に使われるlogging.pathLOG_PATHデフォルトのログ設定が定義されている場合に使われるlogging.pattern.consoleCONSOLE_LOG_PATTERNコンソール出力のログパターン、JDKのロガーはサポートされていないlogging.pattern.fileFILE_LOG_PATTERNファイル出力のログパターン、JDKのロガーはサポートされていないlogging.pattern.levelLOG_LEVEL_PATTERNこの形式はLogbackでのみサポートされている。デフォルトは%5pPIDPIDプロセスID

在解析配置文件时,所有支持的日志系统都可以参考系统属性。请参考spring-boot.jar的默认配置文件示例。

如果希望在日志系统中使用占位符,需要使用Spring Boot的语法和基础框架无关的语法。如果使用Logback,需要将冒号“:”作为属性名默认值的分隔符。

26.6. Logback的扩展

Spring Boot包含了许多Logback扩展,以便将其配置得更加高级化,并可以在logback-spring.xml配置文件中使用这些扩展。
注意:在基本的logback.xml配置文件中,由于读取速度过快,无法使用这些扩展。因此,需要使用logback-spring.xml或定义logging.config属性。

26.6.1. 特定于个人资料的设置

标签可以包含或排除基于有效的Spring配置文件作为基础的配置。Profile部分在元素范围内随处可用。name属性用于识别每个配置文件,并且可以使用逗号分隔设置多个配置文件。以下是配置示例。

<springProfile name="staging">
    <!-- configuration to be enabled when the "staging" profile is active -->
</springProfile>

<springProfile name="dev, staging">
    <!-- configuration to be enabled when the "dev" or "staging" profiles are active -->
</springProfile>

<springProfile name="!production">
    <!-- configuration to be enabled when the "production" profile is not active -->
</springProfile>

26.6.2. 环境属性

标签可以在Logback内部使用,以从Spring环境中暴露属性。如果在logback配置中想要从application.properties访问值,这将很有用,使用这个标签可以像直接指定值一样使用Logback的基本标签的方法。如果需要在local scope以外的其他地方保存属性,则可以使用scope属性。

<springProperty scope="context" name="fluentHost" source="myapp.fluentd.host"/>
<appender name="FLUENT" class="ch.qos.logback.more.appenders.DataFluentAppender">
    <remoteHost>${fluentHost}</remoteHost>
    ...
</appender>
广告
将在 10 秒后关闭
bannerAds