getsentry / getsentry/sentry-java

`SentryLogbackInitializer` is initialized too late

Abierto
#3,650 1 comentario 0 reacciones 0 asignados Ver en GitHub
Improvement Java Logs
Lenguaje dominante
Kotlin
Estrellas
1.4k
Forks
478
Merge medio
2 d 23 h
PR fusionados (30 d)
67

Descripción

### 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](https://docs.spring.io/spring-boot/reference/features/spring-application.html#features.spring-application.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](https://github.com/spring-projects/spring-boot/blob/7936de70d897fcc8cc929b9afe2dfc8ac7ad0adf/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/context/logging/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
```

2. 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?

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.