[JAVA] Collecte des informations client lorsqu'une erreur se produit dans une application Web

L'objectif de cette fois

Si une erreur se produit dans l'application Web (Spring cette fois), utilisez Sentry pour collecter des informations sur le système d'exploitation et le navigateur du client.

Qu'est-ce que Sentry?

OSS qui collecte des informations d'erreur dans différents langages tels que Java, JavaScript, Ruby et C #. C'est pratique car vous pouvez récupérer le navigateur et le système d'exploitation du client exploité. De plus, vous pouvez facilement parcourir et vérifier les erreurs sur une interface graphique (écran de type Slack). Vous pouvez également notifier Slack et vous enregistrer en tant que problème dans Jira.

Procédure de réglage Sentry

Créez un compte sur la page officielle de Sentry

https://www.getsentry.com/signup/

Équipe Sentry et création de projet

Sélectionnez Java dans l'écran ci-dessous et créez un projet

sentry1.png

Obtenir le DSN du projet

Sélectionnez Clés client dans les paramètres du projet et copiez l'URL DSN suivante

sentry1.png

Paramètres de l'application Web "Java (Spring)"

Installation du package sur Maven

Sentry-logback est une bibliothèque qui envoie le contenu de la sortie du journal à Sentry

pom.xml


		<dependency>
			<groupId>io.sentry</groupId>
			<artifactId>sentry-spring</artifactId>
			<version>1.7.4</version>
		</dependency>
		<dependency>
			<groupId>io.sentry</groupId>
			<artifactId>sentry-logback</artifactId>
			<version>1.2.0</version>
		</dependency>

Ajouter Bean en décrivant les paramètres Sentry en Java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.HandlerExceptionResolver;

import io.sentry.Sentry;

@SpringBootApplication
public class SentryApplication {
	public static void main(String[] args) {
		SpringApplication.run(SentryApplication.class, args);
		Sentry.init("https://xxxxxxxxxxxxxxx@sentry.io/1202285");
	}
	@Bean
	public HandlerExceptionResolver sentryExceptionResolver() {
		return new io.sentry.spring.SentryExceptionResolver();
	}
	@Bean
	public ServletContextInitializer sentryServletContextInitializer() {
		return new io.sentry.spring.SentryServletContextInitializer();
	}
}

Sentry ajouté à LogBack

Installez les fichiers suivants sous ressource

logback.xml


<configuration>

  <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="Sentry" class="io.sentry.logback.SentryAppender">
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>WARN</level>
    </filter>
  </appender>

  <root level="DEBUG">
    <appender-ref ref="Console" />
    <appender-ref ref="Sentry"/>
  </root>

</configuration>

Sortie de journal décrite dans la classe Controller

Le contenu au moment de logger.error est envoyé à Sentry

	@RequestMapping("/")
	public String list(Model model) {
		logger.error("sentry error");
		return "Greetings from Spring Boot!";
	}

résultat

Envoyez un e-mail d'erreur à l'adresse e-mail enregistrée par Sentry. De plus, les erreurs s'accumulent dans les projets Sentry

sentry1.png

[Supplément]: intégration Sentry et Slack

Il est possible d'établir un lien avec Slack à partir de l'écran de configuration de Sentry. Fonctionne avec de nombreuses autres applications.

Slack連携.png

Recommended Posts

Collecte des informations client lorsqu'une erreur se produit dans une application Web
Un rappel lorsqu'une erreur aapt.exe se produit
Lors de l'utilisation d'une liste en Java, java.awt.List sort et une erreur se produit
Une erreur se produit lorsque codedeploy-agent est installé dans Ubuntu Server 20.04
Créons une application TODO avec Java 12 Processing lorsqu'une requête arrive avec une HttpMethod inutilisée ・ Traitement lorsqu'une erreur se produit sur le serveur
Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger
J'obtiens une erreur lors de l'ajout d'une dépendance
[Rails] Solution lorsqu'une erreur de migration se produit dans agit-as-taggable-on
J'ai une question. Une erreur se produit lors de la lecture d'une vidéo dans Listview avec Android.
[Révision] Lors de la création d'une application Web avec Rails, erreur de syntaxe, inattendue ')', expecting => ...]}% ","% # {params [: content]}% "]) ...
Personnalisez l'affichage lorsqu'une erreur telle que 404 Not Found se produit dans Spring Boot
[Non résolu] Une exception se produit lorsqu'une connexion SSH est exécutée à l'aide de JSch à partir d'une application Java 6.
Résoudre l'erreur CreateProcess = 206 lors de l'exécution de Java dans un environnement Windows
Lorsqu'une erreur se produit même si la validation n'est pas définie
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
Swift: un piège pour définir plusieurs éléments initiaux dans un tableau
Déployer automatiquement des applications Web développées en Java à l’aide de Jenkins [Préparation]
Après avoir basculé entre les versions Java 8 et 11, une erreur se produit lors de la confirmation
Notes de solution lorsqu'une erreur se produit lors du téléchargement de docker gpg à l'aide de curl
Quelle est la différence entre un serveur Web et un serveur d'applications?
Version simplifiée du calcul des nombres en collectant des informations dans une instance
Il doit être identique à l'exemple lors de la connexion à Twitter, mais une erreur se produit jusqu'à la résolution
Créer une application Web avec Javalin
Implémenter le client gRPC dans Ruby
[Opération non autorisée] Un mémorandum car une erreur s'est produite lors de la création d'une instance EC2.
Déployer automatiquement des applications Web développées en Java à l'aide de Jenkins [Spring Boot App Edition]
Que faire si une erreur se produit lorsque nokogiri entre lors de l'installation du bundle
Je souhaite afficher un message d'erreur lors de l'inscription dans la base de données
Comment migrer une application Web créée dans un environnement Docker local vers AWS
Faire de la racine de contexte le dossier du projet dans le projet Web dynamique d'Eclipse
Remarques sur la marche à suivre lorsqu'une exception WebView ClassNotFoundException se produit dans JavaFX 12
À quoi me suis-je préparé lorsque je suis entré dans un projet de développement d'application Android tout en développant le Web avec Java?
Une erreur s'est produite lors de l'exécution d'une fonction avec CURSOR défini dans le paramètre OUT de MyBatis dans PostgreSQL.