После написания этой статьи я пересмотрел свой подход. Подробности см. в этой последующей статье . Приведенный ниже подход по-прежнему работает, с некоторыми оговорками.
Мы тестируем Sentry для оповещения об ошибках в Focused Labs, и я хотел настроить его в своем бэкэнде Spring Boot. По большей части Sentry было очень легко добавить в проект, но я столкнулся с несколькими небольшими проблемами с интеграцией Spring Boot, которыми я хотел поделиться с сообществом.
Я буду краток, вот что у меня получилось:
build.gradle.kts
:
implementation("io.sentry:sentry-spring-boot-starter:1.7.30") implementation("io.sentry:sentry-logback:1.7.30")
В некоторых сценариях это может привести к повторяющимся ошибкам. Официальные документы предостерегают от включения как sentry-spring
(который извлекается с помощью sentry-spring-boot-starter
), так и sentry-logback
. Что имеет смысл, поскольку интеграция Spring с Sentry обрабатывает исключения и отправляет их в Sentry, а интеграция Logback просматривает журналы, а затем отправляет их в Sentry.
Мы используем GraphQL в нашем бэкэнде, поэтому поведение sentry-spring
не улавливало наши исключения, поскольку они улавливают исключительно ошибки в контексте контроллера MVC. Тем не менее, потенциально исключение будет одновременно регистрироваться и перехватываться обработчиком исключений Sentry, что приведет к повторяющейся ошибке. Если это станет проблемой, мне придется пересмотреть свои зависимости.
Вот почему я беспокоюсь о часовой-пружинный-загрузочный-стартер
приложение.yaml
:
--- sentry: dsn: '' stacktrace: app-packages: - com.mypackage spring: profiles: active: dev -------- spring: profiles: dev sentry: enabled: false environment: dev -------- spring: profiles: production sentry: environment: production
Сладкий, сладкий ЯМЛ.
Благодаря поддержке конфигурации в/| sentry-spring-boot-starter Я могу просто найти свою конфигурацию Sentry прямо рядом с остальной частью моей конфигурации Spring Boot.
logback-spring.xml
:
WARN
Используя include
здесь, я могу перейти к конфигурации журнала загрузки Spring по умолчанию и переопределить только то, что мне абсолютно необходимо. В этом случае добавление дополнительного добавляется к root
logger.
И это все! Это выглядит просто, когда изложено здесь, но потребовалось несколько итераций, чтобы все заработало. Надеюсь, это поможет другим людям в том же процессе.
Оригинал: “https://dev.to/focusedlabs/sentry-with-spring-boot-1jko”