Class SentryInitializer

java.lang.Object
br.com.xadm.comum.web.SentryInitializer

public final class SentryInitializer extends Object
Inicializa o SDK do Sentry apontando para o Bugsink self-hosted — o Bugsink fala o protocolo do Sentry, então usa-se o SDK Java do Sentry sem alteração.

Deve ser chamado pelo main do app antes de subir o contexto Micronaut. Inicializar cedo (antes do logback) garante que o SentryAppender declarado em logback.xml encontre o Sentry já habilitado: o appender não emite o aviso "DSN is null" e a auto-inicialização dele — que usaria InitPriority.LOWEST — vira no-op diante desta init.

Configuração (variáveis de ambiente)

Como roda antes do Micronaut, a configuração vem de variáveis de ambiente, não do application.yml:

  • SENTRY_DSN — DSN do projeto no Bugsink. Ausente ou vazio desabilita o Sentry (dev e testes não enviam nada). GLITCHTIP_DSN é aceito como fallback (nome antigo, em transição).
  • SENTRY_ENVIRONMENT — ambiente reportado (production se ausente).
  • SENTRY_RELEASE — versão do release (opcional).
  • SENTRY_TRACES_SAMPLE_RATE — taxa de amostragem de tracing (0.0 se ausente ou inválida).
  • CLIENTE — identificador do cliente (multi-tenant). Quando não-branco, vira a tag cliente em todo evento, permitindo filtrar/agrupar por cliente num único projeto Bugsink. Ausente/branco (deploy single-tenant) → nenhuma tag é setada.
  • MICRONAUT_ENVIRONMENTS — quando contém o token dev ou test, a init é um no-op explícito (não envia nada; dev não tem DSN, testes usam @MicronautTest e não chamam este método).

Todo evento leva contexto de request (PII: IP, headers) — setSendDefaultPii(true). O Bugsink é self-hosted, então esse dado fica na infra interna.

Captura de erros: o SentryAppender (logback) envia ao Bugsink todo log de nível ERROR — incluindo a exceção, quando ela é passada ao logger.

O SDK do Sentry é uma dependência compileOnly desta lib: quem chama inicializar() deve trazer o Sentry no classpath (os apps já trazem sentry-logback).

  • Method Details

    • inicializar

      public static void inicializar()
      Lê as variáveis SENTRY_*/CLIENTE e inicializa o SDK do Sentry/Bugsink. É um no-op quando MICRONAUT_ENVIRONMENTS contém dev/test (dev não tem DSN; testes não chamam o main) ou quando SENTRY_DSN está ausente — nesses casos só registra um log. Falhas de inicialização são logadas e engolidas — error tracking indisponível não deve impedir o app de subir.
    • dispararEventoTeste

      public static String dispararEventoTeste()
      Dispara um evento de teste para o Bugsink — usado pelo botão de diagnóstico do app. Captura uma exceção sintética e bloqueia até o flush (ou 3s) para dar ao operador um feedback honesto de entrega.
      Returns:
      o event id do Bugsink, ou string vazia quando o Sentry está desabilitado.
    • isHabilitado

      public static boolean isHabilitado()
      Returns true se o Sentry.init rodou com DSN — ver inicializar().
      Returns:
      true se o Sentry.init rodou com DSN — ver inicializar()
    • getAmbiente

      public static String getAmbiente()
      Returns ambiente reportado nos eventos (SENTRY_ENVIRONMENT); vazio se desabilitado.
      Returns:
      ambiente reportado nos eventos (SENTRY_ENVIRONMENT); vazio se desabilitado
    • getEndpoint

      public static String getEndpoint()
      Returns endpoint do Bugsink (host/projeto, sem a chave); vazio se desabilitado.
      Returns:
      endpoint do Bugsink (host/projeto, sem a chave); vazio se desabilitado