Skip to content

SentryLogbackInitializer is initialized too late #3650

Open
@ghoonch4

Description

@ghoonch4

Problem Statement

I am trying to use the sentry-spring-boot-starter-jakarta library. However, I have discovered that warning logs during the application startup are not being sent to Sentry. In SentryLogbackAppenderAutoConfiguration, the autoconfiguration for SentryLogbackInitializer is found, and this configuration seems to be too late.

Spring publishes events in the order described in Spring Application Events and Listeners. When configuring SentryAppender directly via logback-spring.xml without using the sentry-spring-boot-starter-jakarta library, the SentryAppender is initialized at the time of the ApplicationEnvironmentPreparedEvent publication. This is an earlier initialization point. Please refer to LoggingApplicationListener.java#L218.

Solution Brainstorm

  1. Instead of using SentryLogbackAppenderAutoConfiguration, how about registering the listener quickly by configuring it in spring.factories like:
org.springframework.context.ApplicationListener=\
io.sentry.spring.boot.jakarta.SentryLogbackInitializer
  1. Currently, SentryLogbackInitializer supports events of type ContextRefreshedEvent, but even with early listener registration, a lot of tasks may already have been performed by the time ContextRefreshedEvent is published. Can we initialize it at the time of ApplicationEnvironmentPreparedEvent publication?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Needs Discussion

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions