Spring Boot 使用共享资源日志记录进行所有内部日志记录,但将底层日志实现保持打开状态。 为 Java Util LoggingLog4j2Logback 提供了缺省配置。 在每种情况下,记录器都预先配置为使用控制台输出,并提供可选的文件输出。Spring中文文档

默认情况下,如果使用“Starters”,则使用 Logback 进行日志记录。 还包括适当的 Logback 路由,以确保使用 Java Util Logging、Commons Logging、Log4J 或 SLF4J 的依赖库都能正常工作。Spring中文文档

有很多可用于 Java 的日志框架。 如果上面的列表看起来令人困惑,请不要担心。 通常,您不需要更改日志记录依赖项,Spring Boot 默认值就可以正常工作。
将应用程序部署到 servlet 容器或应用程序服务器时,使用 Java Util 日志记录 API 执行的日志记录不会路由到应用程序的日志中。 这样可以防止容器或已部署到容器的其他应用程序执行的日志记录显示在应用程序的日志中。
有很多可用于 Java 的日志框架。 如果上面的列表看起来令人困惑,请不要担心。 通常,您不需要更改日志记录依赖项,Spring Boot 默认值就可以正常工作。
将应用程序部署到 servlet 容器或应用程序服务器时,使用 Java Util 日志记录 API 执行的日志记录不会路由到应用程序的日志中。 这样可以防止容器或已部署到容器的其他应用程序执行的日志记录显示在应用程序的日志中。

日志格式

Spring Boot 的默认日志输出类似于以下示例:Spring中文文档

2024-06-20T10:08:09.995Z  INFO 111881 --- [myapp] [           main] o.s.b.d.f.logexample.MyApplication       : Starting MyApplication using Java 17.0.11 with PID 111881 (/opt/apps/myapp.jar started by myuser in /opt/apps/)
2024-06-20T10:08:10.009Z  INFO 111881 --- [myapp] [           main] o.s.b.d.f.logexample.MyApplication       : No active profile set, falling back to 1 default profile: "default"
2024-06-20T10:08:15.428Z  INFO 111881 --- [myapp] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-06-20T10:08:15.472Z  INFO 111881 --- [myapp] [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-06-20T10:08:15.472Z  INFO 111881 --- [myapp] [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.25]
2024-06-20T10:08:15.674Z  INFO 111881 --- [myapp] [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-06-20T10:08:15.677Z  INFO 111881 --- [myapp] [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5327 ms
2024-06-20T10:08:17.620Z  INFO 111881 --- [myapp] [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2024-06-20T10:08:17.666Z  INFO 111881 --- [myapp] [           main] o.s.b.d.f.logexample.MyApplication       : Started MyApplication in 10.202 seconds (process running for 12.125)

输出以下项目:Spring中文文档

Logback 没有级别。 它映射到 。FATALERROR
如果您有属性,但不希望将其记录,则可以设置为 。spring.application.namelogging.include-application-namefalse
Logback 没有级别。 它映射到 。FATALERROR
如果您有属性,但不希望将其记录,则可以设置为 。spring.application.namelogging.include-application-namefalse

控制台输出

默认日志配置在写入消息时将消息回显到控制台。 默认情况下,将记录 -level、-level 和 -level 消息。 您还可以通过使用标志启动应用程序来启用“调试”模式。ERRORWARNINFO--debugSpring中文文档

$ java -jar myapp.jar --debug
您还可以在 .debug=trueapplication.properties

启用调试模式后,将配置一系列核心记录器(嵌入式容器、Hibernate 和 Spring Boot)以输出更多信息。 启用调试模式不会将应用程序配置为使用 level 记录所有消息。DEBUGSpring中文文档

或者,您可以通过使用标志(或在 . 这样做可以对一系列核心记录器(嵌入式容器、Hibernate 模式生成和整个 Spring 产品组合)进行跟踪日志记录。--tracetrace=trueapplication.propertiesSpring中文文档

颜色编码输出

如果您的终端支持 ANSI,则使用颜色输出来帮助提高可读性。 您可以设置为支持的值以覆盖自动检测。spring.output.ansi.enabledSpring中文文档

使用转换词配置颜色编码。 在最简单的形式中,转换器根据日志级别为输出着色,如以下示例所示:%clrSpring中文文档

%clr(%5p)

下表描述了日志级别到颜色的映射:Spring中文文档

水平 颜色

FATALSpring中文文档

Spring中文文档

ERRORSpring中文文档

Spring中文文档

WARNSpring中文文档

黄色Spring中文文档

INFOSpring中文文档

绿Spring中文文档

DEBUGSpring中文文档

绿Spring中文文档

TRACESpring中文文档

绿Spring中文文档

或者,您可以通过将其作为转换选项提供来指定应使用的颜色或样式。 例如,若要使文本变为黄色,请使用以下设置:Spring中文文档

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

支持以下颜色和样式:Spring中文文档

您还可以在 .debug=trueapplication.properties
水平 颜色

FATALSpring中文文档

Spring中文文档

ERRORSpring中文文档

Spring中文文档

WARNSpring中文文档

黄色Spring中文文档

INFOSpring中文文档

绿Spring中文文档

DEBUGSpring中文文档

绿Spring中文文档

TRACESpring中文文档

绿Spring中文文档

文件输出

默认情况下,Spring Boot 仅记录到控制台,不写入日志文件。 如果要在控制台输出之外编写日志文件,则需要设置 or 属性(例如,在 .logging.file.namelogging.file.pathapplication.propertiesSpring中文文档

下表显示了如何将这些属性一起使用:logging.*Spring中文文档

表 1.日志记录属性
logging.file.name logging.file.path 描述

(无)Spring中文文档

(无)Spring中文文档

仅限控制台日志记录。Spring中文文档

特定文件Spring中文文档

(无)Spring中文文档

my.logSpring中文文档

写入指定的日志文件。 名称可以是确切的位置,也可以是相对于当前目录的名称。Spring中文文档

(无)Spring中文文档

特定目录Spring中文文档

/var/logSpring中文文档

写入指定的目录。 名称可以是确切的位置,也可以是相对于当前目录的名称。spring.logSpring中文文档

日志文件在达到 10 MB 时会轮换,并且与控制台输出一样,默认情况下会记录 -level、-level 和 -level 消息。ERRORWARNINFOSpring中文文档

日志记录属性独立于实际的日志记录基础结构。 因此,Spring Boot不管理特定的配置键(例如Logback)。logback.configurationFile
表 1.日志记录属性
logging.file.name logging.file.path 描述

(无)Spring中文文档

(无)Spring中文文档

仅限控制台日志记录。Spring中文文档

特定文件Spring中文文档

(无)Spring中文文档

my.logSpring中文文档

写入指定的日志文件。 名称可以是确切的位置,也可以是相对于当前目录的名称。Spring中文文档

(无)Spring中文文档

特定目录Spring中文文档

/var/logSpring中文文档

写入指定的目录。 名称可以是确切的位置,也可以是相对于当前目录的名称。spring.logSpring中文文档

日志记录属性独立于实际的日志记录基础结构。 因此,Spring Boot不管理特定的配置键(例如Logback)。logback.configurationFile

文件轮换

如果您使用的是 Logback,则可以使用 your 或 file 微调日志轮换设置。 对于所有其他日志记录系统,您需要直接自己配置轮换设置(例如,如果您使用 Log4j2,则可以添加 or 文件)。application.propertiesapplication.yamllog4j2.xmllog4j2-spring.xmlSpring中文文档

支持以下轮换策略属性:Spring中文文档

名字 描述

logging.logback.rollingpolicy.file-name-patternSpring中文文档

用于创建日志存档的文件名模式。Spring中文文档

logging.logback.rollingpolicy.clean-history-on-startSpring中文文档

如果应在应用程序启动时进行日志存档清理。Spring中文文档

logging.logback.rollingpolicy.max-file-sizeSpring中文文档

日志文件存档前的最大大小。Spring中文文档

logging.logback.rollingpolicy.total-size-capSpring中文文档

日志存档在删除之前可以占用的最大大小。Spring中文文档

logging.logback.rollingpolicy.max-historySpring中文文档

要保留的最大存档日志文件数(默认为 7)。Spring中文文档

名字 描述

logging.logback.rollingpolicy.file-name-patternSpring中文文档

用于创建日志存档的文件名模式。Spring中文文档

logging.logback.rollingpolicy.clean-history-on-startSpring中文文档

如果应在应用程序启动时进行日志存档清理。Spring中文文档

logging.logback.rollingpolicy.max-file-sizeSpring中文文档

日志文件存档前的最大大小。Spring中文文档

logging.logback.rollingpolicy.total-size-capSpring中文文档

日志存档在删除之前可以占用的最大大小。Spring中文文档

logging.logback.rollingpolicy.max-historySpring中文文档

要保留的最大存档日志文件数(默认为 7)。Spring中文文档

日志级别

所有受支持的日志记录系统都可以在 Spring 中设置记录器级别(例如,in ),方法是使用 where is 是 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF 之一。 可以使用 来配置记录器。Environmentapplication.propertieslogging.level.<logger-name>=<level>levelrootlogging.level.rootSpring中文文档

以下示例显示了 : 中的潜在日志记录设置:application.propertiesSpring中文文档

logging.level.root=warn
logging.level.org.springframework.web=debug
logging.level.org.hibernate=error
logging:
  level:
    root: "warn"
    org.springframework.web: "debug"
    org.hibernate: "error"

还可以使用环境变量设置日志记录级别。 例如,将设置为 。LOGGING_LEVEL_ORG_SPRINGFRAMEWORK_WEB=DEBUGorg.springframework.webDEBUGSpring中文文档

上述方法仅适用于包级日志记录。 由于宽松绑定始终将环境变量转换为小写,因此无法以这种方式为单个类配置日志记录。 如果需要为类配置日志记录,可以使用 SPRING_APPLICATION_JSON 变量。
上述方法仅适用于包级日志记录。 由于宽松绑定始终将环境变量转换为小写,因此无法以这种方式为单个类配置日志记录。 如果需要为类配置日志记录,可以使用 SPRING_APPLICATION_JSON 变量。

日志组

能够将相关的记录器组合在一起,以便可以同时配置它们,这通常很有用。 例如,您通常可能会更改所有与 Tomcat 相关的记录器的日志记录级别,但您无法轻松记住顶级包。Spring中文文档

为了帮助解决这个问题,Spring Boot 允许您在 Spring . 例如,下面介绍如何通过将“tomcat”组添加到您的Environmentapplication.propertiesSpring中文文档

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

定义后,您可以使用一行更改组中所有记录器的级别:Spring中文文档

logging.level.tomcat=trace
logging:
  level:
    tomcat: "trace"

Spring Boot 包括以下预定义的日志记录组,这些组可以开箱即用:Spring中文文档

名字 Logging

WebSpring中文文档

org.springframework.core.codec, , , ,org.springframework.httporg.springframework.weborg.springframework.boot.actuate.endpoint.weborg.springframework.boot.web.servlet.ServletContextInitializerBeansSpring中文文档

sqlSpring中文文档

org.springframework.jdbc.core, ,org.hibernate.SQLorg.jooq.tools.LoggerListenerSpring中文文档

名字 Logging

WebSpring中文文档

org.springframework.core.codec, , , ,org.springframework.httporg.springframework.weborg.springframework.boot.actuate.endpoint.weborg.springframework.boot.web.servlet.ServletContextInitializerBeansSpring中文文档

sqlSpring中文文档

org.springframework.jdbc.core, ,org.hibernate.SQLorg.jooq.tools.LoggerListenerSpring中文文档

使用日志关闭挂钩

为了在应用程序终止时释放日志记录资源,提供了一个关闭钩子,该钩子将在 JVM 退出时触发日志系统清理。 除非应用程序部署为 war 文件,否则会自动注册此关闭挂钩。 如果应用程序具有复杂的上下文层次结构,则关闭钩子可能无法满足您的需求。 如果没有,请禁用关闭挂钩并调查底层日志记录系统直接提供的选项。 例如,Logback 提供了上下文选择器,允许在自己的上下文中创建每个 Logger。 可以使用该属性禁用关闭挂钩。 将其设置为将禁用注册。 您可以在 or 文件中设置属性:logging.register-shutdown-hookfalseapplication.propertiesapplication.yamlSpring中文文档

logging.register-shutdown-hook=false
logging:
  register-shutdown-hook: false

自定义日志配置

可以通过在类路径上包含适当的库来激活各种日志记录系统,并且可以通过在类路径的根目录或以下 Spring 属性指定的位置提供合适的配置文件来进一步自定义:。Environmentlogging.configSpring中文文档

您可以使用 system 属性强制 Spring Boot 使用特定的日志记录系统。 该值应为实现的完全限定类名。 您还可以使用值 完全禁用 Spring Boot 的日志记录配置。org.springframework.boot.logging.LoggingSystemLoggingSystemnoneSpring中文文档

由于日志记录是在创建之前初始化的,因此无法从 Spring 文件中控制日志记录。 更改日志记录系统或完全禁用它的唯一方法是通过系统属性。ApplicationContext@PropertySources@Configuration

根据您的日志记录系统,将加载以下文件:Spring中文文档

测井系统 定制

回溯Spring中文文档

logback-spring.xmllogback-spring.groovylogback.xmllogback.groovySpring中文文档

日志4j2Spring中文文档

log4j2-spring.xmllog4j2.xmlSpring中文文档

JDK(Java Util 日志记录)Spring中文文档

logging.propertiesSpring中文文档

如果可能,我们建议您将变体用于日志记录配置(例如,而不是 )。 如果使用标准配置位置,Spring 无法完全控制日志初始化。-springlogback-spring.xmllogback.xml
Java Util Logging 存在已知的类加载问题,这些问题会导致从“可执行 jar”运行时出现问题。 如果可能的话,我们建议您在从“可执行 jar”运行时避免使用它。

为了帮助进行自定义,将其他一些属性从 Spring 属性转移到 System 属性。 这允许日志记录系统配置来使用属性。例如,在环境变量中设置或设置为环境变量将导致设置 System 属性。 下表描述了传输的属性:Environmentlogging.file.nameapplication.propertiesLOGGING_FILE_NAMELOG_FILESpring中文文档

春季环境 System 属性 评论

logging.exception-conversion-wordSpring中文文档

LOG_EXCEPTION_CONVERSION_WORDSpring中文文档

记录异常时使用的转换词。Spring中文文档

logging.file.nameSpring中文文档

LOG_FILESpring中文文档

如果已定义,则在默认日志配置中使用它。Spring中文文档

logging.file.pathSpring中文文档

LOG_PATHSpring中文文档

如果已定义,则在默认日志配置中使用它。Spring中文文档

logging.pattern.consoleSpring中文文档

CONSOLE_LOG_PATTERNSpring中文文档

要在控制台上使用的日志模式 (stdout)。Spring中文文档

logging.pattern.dateformatSpring中文文档

LOG_DATEFORMAT_PATTERNSpring中文文档

日志日期格式的 Appender 模式。Spring中文文档

logging.charset.consoleSpring中文文档

CONSOLE_LOG_CHARSETSpring中文文档

用于控制台日志记录的字符集。Spring中文文档

logging.threshold.consoleSpring中文文档

CONSOLE_LOG_THRESHOLDSpring中文文档

用于控制台日志记录的日志级别阈值。Spring中文文档

logging.pattern.fileSpring中文文档

FILE_LOG_PATTERNSpring中文文档

要在文件中使用的日志模式(如果已启用)。LOG_FILESpring中文文档

logging.charset.fileSpring中文文档

FILE_LOG_CHARSETSpring中文文档

用于文件日志记录的字符集(如果已启用)。LOG_FILESpring中文文档

logging.threshold.fileSpring中文文档

FILE_LOG_THRESHOLDSpring中文文档

用于文件日志记录的日志级别阈值。Spring中文文档

logging.pattern.levelSpring中文文档

LOG_LEVEL_PATTERNSpring中文文档

呈现日志级别时要使用的格式(默认)。%5pSpring中文文档

PIDSpring中文文档

PIDSpring中文文档

当前进程 ID(如果可能且尚未定义为 OS 环境变量时发现)。Spring中文文档

如果使用 Logback,还会传输以下属性:Spring中文文档

春季环境 System 属性 评论

logging.logback.rollingpolicy.file-name-patternSpring中文文档

LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERNSpring中文文档

滚动日志文件名的模式(默认)。${LOG_FILE}.%d{yyyy-MM-dd}.%i.gzSpring中文文档

logging.logback.rollingpolicy.clean-history-on-startSpring中文文档

LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_STARTSpring中文文档

是否在启动时清理归档日志文件。Spring中文文档

logging.logback.rollingpolicy.max-file-sizeSpring中文文档

LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZESpring中文文档

最大日志文件大小。Spring中文文档

logging.logback.rollingpolicy.total-size-capSpring中文文档

LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAPSpring中文文档

要保留的日志备份的总大小。Spring中文文档

logging.logback.rollingpolicy.max-historySpring中文文档

LOGBACK_ROLLINGPOLICY_MAX_HISTORYSpring中文文档

要保留的存档日志文件的最大数量。Spring中文文档

所有受支持的日志记录系统都可以在分析其配置文件时查阅系统属性。 有关示例,请参阅默认配置:spring-boot.jarSpring中文文档

如果要在日志记录属性中使用占位符,则应使用 Spring Boot 的语法,而不是基础框架的语法。 值得注意的是,如果使用 Logback,则应使用属性名称与其默认值之间的分隔符,而不是 。::-Spring中文文档

您可以将 MDC 和其他临时内容添加到日志行中,方法是仅覆盖 (或使用 Logback)。 例如,如果使用 ,则默认日志格式包含“user”的 MDC 条目(如果存在),如以下示例所示。LOG_LEVEL_PATTERNlogging.pattern.levellogging.pattern.level=user:%X{user} %5pSpring中文文档

2019-08-30 12:30:04.031 user:someone INFO 22174 --- [  nio-8080-exec-0] demo.Controller
Handling authenticated request
由于日志记录是在创建之前初始化的,因此无法从 Spring 文件中控制日志记录。 更改日志记录系统或完全禁用它的唯一方法是通过系统属性。ApplicationContext@PropertySources@Configuration
测井系统 定制

回溯Spring中文文档

logback-spring.xmllogback-spring.groovylogback.xmllogback.groovySpring中文文档

日志4j2Spring中文文档

log4j2-spring.xmllog4j2.xmlSpring中文文档

JDK(Java Util 日志记录)Spring中文文档

logging.propertiesSpring中文文档

如果可能,我们建议您将变体用于日志记录配置(例如,而不是 )。 如果使用标准配置位置,Spring 无法完全控制日志初始化。-springlogback-spring.xmllogback.xml
Java Util Logging 存在已知的类加载问题,这些问题会导致从“可执行 jar”运行时出现问题。 如果可能的话,我们建议您在从“可执行 jar”运行时避免使用它。
春季环境 System 属性 评论

logging.exception-conversion-wordSpring中文文档

LOG_EXCEPTION_CONVERSION_WORDSpring中文文档

记录异常时使用的转换词。Spring中文文档

logging.file.nameSpring中文文档

LOG_FILESpring中文文档

如果已定义,则在默认日志配置中使用它。Spring中文文档

logging.file.pathSpring中文文档

LOG_PATHSpring中文文档

如果已定义,则在默认日志配置中使用它。Spring中文文档

logging.pattern.consoleSpring中文文档

CONSOLE_LOG_PATTERNSpring中文文档

要在控制台上使用的日志模式 (stdout)。Spring中文文档

logging.pattern.dateformatSpring中文文档

LOG_DATEFORMAT_PATTERNSpring中文文档

日志日期格式的 Appender 模式。Spring中文文档

logging.charset.consoleSpring中文文档

CONSOLE_LOG_CHARSETSpring中文文档

用于控制台日志记录的字符集。Spring中文文档

logging.threshold.consoleSpring中文文档

CONSOLE_LOG_THRESHOLDSpring中文文档

用于控制台日志记录的日志级别阈值。Spring中文文档

logging.pattern.fileSpring中文文档

FILE_LOG_PATTERNSpring中文文档

要在文件中使用的日志模式(如果已启用)。LOG_FILESpring中文文档

logging.charset.fileSpring中文文档

FILE_LOG_CHARSETSpring中文文档

用于文件日志记录的字符集(如果已启用)。LOG_FILESpring中文文档

logging.threshold.fileSpring中文文档

FILE_LOG_THRESHOLDSpring中文文档

用于文件日志记录的日志级别阈值。Spring中文文档

logging.pattern.levelSpring中文文档

LOG_LEVEL_PATTERNSpring中文文档

呈现日志级别时要使用的格式(默认)。%5pSpring中文文档

PIDSpring中文文档

PIDSpring中文文档

当前进程 ID(如果可能且尚未定义为 OS 环境变量时发现)。Spring中文文档

春季环境 System 属性 评论

logging.logback.rollingpolicy.file-name-patternSpring中文文档

LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERNSpring中文文档

滚动日志文件名的模式(默认)。${LOG_FILE}.%d{yyyy-MM-dd}.%i.gzSpring中文文档

logging.logback.rollingpolicy.clean-history-on-startSpring中文文档

LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_STARTSpring中文文档

是否在启动时清理归档日志文件。Spring中文文档

logging.logback.rollingpolicy.max-file-sizeSpring中文文档

LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZESpring中文文档

最大日志文件大小。Spring中文文档

logging.logback.rollingpolicy.total-size-capSpring中文文档

LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAPSpring中文文档

要保留的日志备份的总大小。Spring中文文档

logging.logback.rollingpolicy.max-historySpring中文文档

LOGBACK_ROLLINGPOLICY_MAX_HISTORYSpring中文文档

要保留的存档日志文件的最大数量。Spring中文文档

如果要在日志记录属性中使用占位符,则应使用 Spring Boot 的语法,而不是基础框架的语法。 值得注意的是,如果使用 Logback,则应使用属性名称与其默认值之间的分隔符,而不是 。::-Spring中文文档

您可以将 MDC 和其他临时内容添加到日志行中,方法是仅覆盖 (或使用 Logback)。 例如,如果使用 ,则默认日志格式包含“user”的 MDC 条目(如果存在),如以下示例所示。LOG_LEVEL_PATTERNlogging.pattern.levellogging.pattern.level=user:%X{user} %5pSpring中文文档

2019-08-30 12:30:04.031 user:someone INFO 22174 --- [  nio-8080-exec-0] demo.Controller
Handling authenticated request

日志回扩展

Spring Boot 包含许多对 Logback 的扩展,可以帮助进行高级配置。 您可以在配置文件中使用这些扩展名。logback-spring.xmlSpring中文文档

由于标准配置文件加载得太早,因此不能在其中使用扩展名。 您需要使用或定义属性。logback.xmllogback-spring.xmllogging.config
这些扩展不能与 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]]

特定于配置文件的配置

该标记允许您根据活动的 Spring 配置文件选择性地包含或排除配置部分。 配置文件部分在元素内的任何位置都受支持。 使用该属性指定哪个配置文件接受配置。 标记可以包含配置文件名称(例如)或配置文件表达式。 配置文件表达式允许表达更复杂的配置文件逻辑,例如 。 有关更多详细信息,请查看 Spring Framework 参考指南。 以下列表显示了三个示例配置文件:<springProfile><configuration>name<springProfile>stagingproduction & (eu-central | eu-west)Spring中文文档

<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>

环境属性

该标记允许您公开 Spring 中的属性以在 Logback 中使用。 如果要在 Logback 配置中访问文件中的值,则这样做会很有用。 该标签的工作方式与 Logback 的标准标签类似。 但是,与其指定直接 ,不如指定 的属性(从 )。 如果需要将属性存储在范围之外的某个位置,则可以使用该属性。 如果需要回退值(以防未在 中设置该属性),则可以使用该属性。 以下示例演示如何公开属性以在 Logback 中使用:<springProperty>Environmentapplication.properties<property>valuesourceEnvironmentlocalscopeEnvironmentdefaultValueSpring中文文档

<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>
在烤肉串的情况下必须指定(例如)。 但是,可以使用宽松的规则将属性添加到 中。sourcemy.property-nameEnvironment
由于标准配置文件加载得太早,因此不能在其中使用扩展名。 您需要使用或定义属性。logback.xmllogback-spring.xmllogging.config
这些扩展不能与 Logback 的配置扫描一起使用。 如果尝试这样做,则对配置文件进行更改将导致记录类似于以下错误之一的错误:
在烤肉串的情况下必须指定(例如)。 但是,可以使用宽松的规则将属性添加到 中。sourcemy.property-nameEnvironment

Log4j2 扩展

Spring Boot 包含许多对 Log4j2 的扩展,可以帮助进行高级配置。 您可以在任何配置文件中使用这些扩展名。log4j2-spring.xmlSpring中文文档

由于标准配置文件加载得太早,因此不能在其中使用扩展名。 您需要使用或定义属性。log4j2.xmllog4j2-spring.xmllogging.config
这些扩展取代了 Log4J 提供的 Spring Boot 支持。 应确保不要在生成中包含该模块。org.apache.logging.log4j:log4j-spring-boot

特定于配置文件的配置

该标记允许您根据活动的 Spring 配置文件选择性地包含或排除配置部分。 配置文件部分在元素内的任何位置都受支持。 使用该属性指定哪个配置文件接受配置。 标记可以包含配置文件名称(例如)或配置文件表达式。 配置文件表达式允许表达更复杂的配置文件逻辑,例如 。 有关更多详细信息,请查看 Spring Framework 参考指南。 以下列表显示了三个示例配置文件:<SpringProfile><Configuration>name<SpringProfile>stagingproduction & (eu-central | eu-west)Spring中文文档

<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>

环境属性查找

如果要在 Log4j2 配置中引用 Spring 中的属性,则可以使用前缀查找。 如果要在 Log4j2 配置中访问文件中的值,则这样做非常有用。Environmentspring:application.propertiesSpring中文文档

下面的示例显示了如何设置一个名为 Log4j2 的属性,该属性从 Spring 读取:applicationNamespring.application.nameEnvironmentSpring中文文档

<Properties>
	<Property name="applicationName">${spring:spring.application.name}</Property>
</Properties>
在烤肉串的情况下应指定查找键(例如)。my.property-name

Log4j2 系统属性

Log4j2 支持许多可用于配置各种项目的系统属性。 例如,system 属性可用于配置是否将在 Windows 上尝试使用 Jansi 输出流。log4j2.skipJansiConsoleAppenderSpring中文文档

Log4j2 初始化后加载的所有系统属性都可以从 Spring 获取。 例如,您可以添加到文件中以在 Windows 上使用 Jansi。Environmentlog4j2.skipJansi=falseapplication.propertiesConsoleAppenderSpring中文文档

仅当系统属性和操作系统环境变量不包含要加载的值时,才会考虑 Spring。Environment
在早期 Log4j2 初始化期间加载的系统属性不能引用 Spring 。 例如,在 Spring 环境可用之前,将使用 Log4j2 用于允许选择默认 Log4j2 实现的属性。Environment
由于标准配置文件加载得太早,因此不能在其中使用扩展名。 您需要使用或定义属性。log4j2.xmllog4j2-spring.xmllogging.config
这些扩展取代了 Log4J 提供的 Spring Boot 支持。 应确保不要在生成中包含该模块。org.apache.logging.log4j:log4j-spring-boot
在烤肉串的情况下应指定查找键(例如)。my.property-name
仅当系统属性和操作系统环境变量不包含要加载的值时,才会考虑 Spring。Environment
在早期 Log4j2 初始化期间加载的系统属性不能引用 Spring 。 例如,在 Spring 环境可用之前,将使用 Log4j2 用于允许选择默认 Log4j2 实现的属性。Environment