Skip to content

[AI-8th]Add structured logging support to SOFABoot#1417

Closed
pmupkin wants to merge 3 commits into
sofastack:masterfrom
pmupkin:structured-logging-design
Closed

[AI-8th]Add structured logging support to SOFABoot#1417
pmupkin wants to merge 3 commits into
sofastack:masterfrom
pmupkin:structured-logging-design

Conversation

@pmupkin
Copy link
Copy Markdown

@pmupkin pmupkin commented Apr 20, 2026

Related #1402

  • Added SofaStructuredLogEncoder to support switching SOFA Logback outputs between pattern logging and structured logging (ecs / logstash).

  • Extended LogEnvironmentPostProcessor to bridge logging.structured., logging.sofa.tracer., and spring.application.* into SOFA logger spaces.

  • Updated SOFABoot runtime and RPC Logback templates to use the new encoder, enabling structured output in SOFA-managed log files.

  • Added tracer-context injection support so structured application logs can include trace.id, span.id, and parent.id when logging.sofa.tracer.output-structured=true.

  • Added focused tests covering pattern fallback, ECS output, property propagation, and tracer context injection.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR ports Spring Boot’s structured logging capability into SOFABoot by introducing a Logback encoder that can switch between classic pattern output and structured JSON (ECS/Logstash), and wiring environment properties so SOFA-managed log files can emit structured logs (optionally enriched with tracer context).

Changes:

  • Added SofaStructuredLogEncoder and updated SOFABoot + RPC Logback templates to enable pattern/structured output switching via logging.structured.*.
  • Extended LogEnvironmentPostProcessor to propagate logging.structured.*, logging.sofa.tracer.*, and spring.application.* into SOFA logging configuration space.
  • Introduced Jakarta Validation-based fail-fast validation for several SOFABoot configuration properties, plus tests and required validation dependencies.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
sofa-boot-project/sofaboot-dependencies/pom.xml Adds dependency management for spring-boot-starter-validation.
sofa-boot-project/sofa-boot/src/main/java/com/alipay/sofa/boot/logging/logback/SofaStructuredLogEncoder.java New encoder to support structured logging with pattern fallback and optional tracer context injection.
sofa-boot-project/sofa-boot/src/main/resources/sofa-boot/log/logback/log-conf.xml Switches file appenders from PatternLayoutEncoder to SofaStructuredLogEncoder.
sofa-boot-project/sofa-boot-core/rpc-sofa-boot/src/main/resources/com/alipay/sofa/rpc/boot/log/logback/log-conf.xml Switches RPC file appenders to SofaStructuredLogEncoder.
sofa-boot-project/sofa-boot/src/main/java/com/alipay/sofa/boot/logging/LogEnvironmentPostProcessor.java Bridges structured logging/tracer/app metadata properties into SOFA logging configs and adds structured format placeholders.
sofa-boot-project/sofa-boot/src/test/java/com/alipay/sofa/boot/logging/logback/SofaStructuredLogEncoderTests.java Adds tests for pattern fallback, ECS output, and tracer context injection.
sofa-boot-project/sofa-boot/src/test/java/com/alipay/sofa/boot/logging/LogEnvironmentPreparingListenerTests.java Adds a test to verify structured logging/tracer/app metadata property propagation.
sofa-boot-project/sofa-boot/pom.xml Adds optional logback-classic dependency and adds tracer-core for tests.
sofa-boot-project/sofa-boot-autoconfigure/pom.xml Adds spring-boot-starter-validation dependency.
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/tracer/SofaTracerProperties.java Adds @Validated and field constraints (e.g., sampler percentage bounds).
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeProperties.java Adds @Validated, numeric constraints, and a cross-field pool-size validation.
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/isle/SofaModuleProperties.java Adds @Validated and positive constraints for parallel refresh config.
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/rpc/SofaBootRpcProperties.java Enables validation and adds a class-level constraint to validate related RPC properties together.
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/rpc/ValidSofaBootRpcProperties.java New Jakarta Validation constraint annotation for RPC properties.
sofa-boot-project/sofa-boot-autoconfigure/src/main/java/com/alipay/sofa/boot/autoconfigure/rpc/SofaBootRpcPropertiesValidator.java New validator implementing detailed RPC property validation rules.
sofa-boot-project/sofa-boot-autoconfigure/src/test/java/com/alipay/sofa/boot/autoconfigure/tracer/SofaTracerAutoConfigurationTests.java Adds test asserting invalid tracer properties fail fast.
sofa-boot-project/sofa-boot-autoconfigure/src/test/java/com/alipay/sofa/boot/autoconfigure/runtime/SofaRuntimeAutoConfigurationTests.java Adds test asserting invalid async-init executor sizing fails fast.
sofa-boot-project/sofa-boot-autoconfigure/src/test/java/com/alipay/sofa/boot/autoconfigure/rpc/SofaRpcAutoConfigurationTests.java Adds test asserting invalid RPC properties fail fast with expected messages.
sofa-boot-project/sofa-boot-autoconfigure/src/test/java/com/alipay/sofa/boot/autoconfigure/isle/SofaModuleAutoConfigurationTests.java Adds test asserting invalid module parallel refresh config fails fast.
sofa-boot-project/sofa-boot-actuator-autoconfigure/pom.xml Adds spring-boot-starter-validation dependency.
sofa-boot-project/sofa-boot-actuator-autoconfigure/src/main/java/com/alipay/sofa/boot/actuator/autoconfigure/health/HealthProperties.java Adds @Validated and positive constraints for health timeouts.
sofa-boot-project/sofa-boot-actuator-autoconfigure/src/test/java/com/alipay/sofa/boot/actuator/autoconfigure/health/ReadinessAutoConfigurationTests.java Adds test asserting invalid health properties fail fast.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 40 to 48
@ConfigurationProperties("sofa.boot.tracer")
@Validated
public class SofaTracerProperties {

/**
* Disable digest log.
*/
@Pattern(regexp = "^(?i:true|false)$", message = "disableDigestLog 必须为 true 或 false")
private String disableDigestLog = "false";
* switches to Spring Boot's structured logging formatters when a structured format is
* configured for SOFA logger spaces.
*
* @author OpenAI
Comment on lines +49 to +54
static final String CONSOLE_LOG_STRUCTURED_FORMAT = "CONSOLE_LOG_STRUCTURED_FORMAT";

static final String FILE_STRUCTURED_FORMAT_PROPERTY = "logging.structured.format.file";

static final String CONSOLE_STRUCTURED_FORMAT_PROPERTY = "logging.structured.format.console";

@codecov
Copy link
Copy Markdown

codecov Bot commented Apr 23, 2026

Codecov Report

❌ Patch coverage is 78.72340% with 70 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.80%. Comparing base (459b02f) to head (c43829b).

Files with missing lines Patch % Lines
...boot/logging/logback/SofaStructuredLogEncoder.java 74.85% 36 Missing and 8 partials ⚠️
...oconfigure/rpc/SofaBootRpcPropertiesValidator.java 79.84% 16 Missing and 10 partials ⚠️
Additional details and impacted files
@@             Coverage Diff              @@
##             master    #1417      +/-   ##
============================================
- Coverage     82.94%   82.80%   -0.14%     
- Complexity     2975     3033      +58     
============================================
  Files           340      342       +2     
  Lines          9833    10149     +316     
  Branches       1178     1204      +26     
============================================
+ Hits           8156     8404     +248     
- Misses         1163     1215      +52     
- Partials        514      530      +16     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@pmupkin pmupkin closed this Apr 23, 2026
@pmupkin pmupkin deleted the structured-logging-design branch April 23, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants