此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Boot 4.0.4!spring-doc.cadn.net.cn

日志记录器

Spring Boot Actuator 可以在运行时查看和配置应用程序的日志级别。 您可以查看整个列表或某个单独的记录器配置,该配置由显式配置的日志级别以及日志框架赋予它的有效日志级别组成。 这些级别可以是以下之一:spring-doc.cadn.net.cn

null 表示没有显式配置。spring-doc.cadn.net.cn

配置日志记录器

要配置给定的记录器,请POST将部分实体发送到资源的 URI,如下例所示:spring-doc.cadn.net.cn

{
	"configuredLevel": "DEBUG"
}
要“重置”日志记录器的特定级别(并改用默认配置),您可以将值 null 作为 configuredLevel 传递。

OpenTelemetry

默认情况下,通过 OpenTelemetry 的日志记录未进行配置。 您需要提供 OpenTelemetry 日志端点的位置以进行配置:spring-doc.cadn.net.cn

management.opentelemetry.logging.export.otlp.endpoint=https://otlp.example.com:4318/v1/logs
management:
  opentelemetry:
    logging:
      export:
        otlp:
          endpoint: "https://otlp.example.com:4318/v1/logs"

management.opentelemetry.logging.export.* 配置属性可用于配置 BatchLogRecordProcessor。 例如,要将导出间隔更改为 15 秒:spring-doc.cadn.net.cn

management.opentelemetry.logging.export.schedule-delay=15s
management:
  opentelemetry:
    logging:
      export:
        schedule-delay: "15s"

management.opentelemetry.logging.limits.* 配置属性可用于配置日志记录的限制。 例如,要将每个日志记录的属性数量限制为 64,并将最大属性值长度限制为 256 个字符:spring-doc.cadn.net.cn

management.opentelemetry.logging.limits.max-attributes=64
management.opentelemetry.logging.limits.max-attribute-value-length=256
management:
  opentelemetry:
    logging:
      limits:
        max-attributes: 64
        max-attribute-value-length: 256

如果您需要完全控制,可以注册一个自定义的 LogLimits bean。spring-doc.cadn.net.cn

OpenTelemetry Logback 追加程序和 Log4j 追加程序不是 Spring Boot 的一部分。 有关更多详细信息,请参阅 OpenTelemetry Logback 追加程序OpenTelemetry Log4j2 追加程序,位于 OpenTelemetry Java 指南库 GitHub 仓库 中。
您必须在 logback-spring.xmllog4j2-spring.xml 配置中配置 appender,以使 OpenTelemetry 日志记录正常工作。

Logback 和 Log4j 的 OpenTelemetryAppender 都需要访问 OpenTelemetry 实例才能正常运行。 此实例必须在应用程序启动期间以编程方式设置,可以这样做:spring-doc.cadn.net.cn

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender;

import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

@Component
class OpenTelemetryAppenderInitializer implements InitializingBean {

	private final OpenTelemetry openTelemetry;

	OpenTelemetryAppenderInitializer(OpenTelemetry openTelemetry) {
		this.openTelemetry = openTelemetry;
	}

	@Override
	public void afterPropertiesSet() {
		OpenTelemetryAppender.install(this.openTelemetry);
	}

}
import io.opentelemetry.api.OpenTelemetry
import io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender
import org.springframework.beans.factory.InitializingBean
import org.springframework.stereotype.Component

@Component
class OpenTelemetryAppenderInitializer(
	private val openTelemetry: OpenTelemetry
) : InitializingBean {

	override fun afterPropertiesSet() = OpenTelemetryAppender.install(openTelemetry)

}