[JAVA] Sammeln von Clientinformationen, wenn in einer Webanwendung ein Fehler auftritt

Diesmal das Ziel

Wenn in der Webanwendung ein Fehler auftritt (diesmal Spring), verwenden Sie Sentry, um Informationen über das Betriebssystem und den Browser des Clients zu sammeln.

Was ist Wachposten?

OSS, das Fehlerinformationen in verschiedenen Sprachen wie Java, JavaScript, Ruby und C # sammelt. Dies ist praktisch, da Sie den Browser und das Betriebssystem des betriebenen Clients abrufen können. Darüber hinaus können Sie Fehler auf einer GUI-basierten (Slack-ähnlichen Bildschirm) leicht durchsuchen und überprüfen. Sie können Slack auch benachrichtigen und sich als Problem in Jira registrieren.

Sentry-Einstellverfahren

Erstellen Sie ein Konto auf der offiziellen Seite von Sentry

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

Wachmannschafts- und Projekterstellung

Wählen Sie im folgenden Bildschirm Java aus und erstellen Sie ein Projekt

sentry1.png

Holen Sie sich das Projekt DSN

Wählen Sie in den Projekteinstellungen Client Keys aus und kopieren Sie die folgende DSN-URL

sentry1.png

Webanwendung "Java (Spring)" Einstellungen

Paketinstallation auf Maven

Sentry-Logback ist eine Bibliothek, die den Inhalt der Protokollausgabe an Sentry sendet

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>

Fügen Sie Bean hinzu, indem Sie die Sentry-Einstellungen in Java beschreiben

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://[email protected]/1202285");
	}
	@Bean
	public HandlerExceptionResolver sentryExceptionResolver() {
		return new io.sentry.spring.SentryExceptionResolver();
	}
	@Bean
	public ServletContextInitializer sentryServletContextInitializer() {
		return new io.sentry.spring.SentryServletContextInitializer();
	}
}

Sentry zu LogBack hinzugefügt

Installieren Sie die folgenden Dateien unter 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>

Protokollausgabe in Controller-Klasse beschrieben

Der Inhalt zum Zeitpunkt von logger.error wird an Sentry gesendet

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

Ergebnis

Senden Sie eine Fehlermail an die von Sentry registrierte Mailadresse. Außerdem häufen sich Fehler in Sentry-Projekten

sentry1.png

[Ergänzung]: Sentry and Slack-Integration

Es ist möglich, über den Einstellungsbildschirm von Sentry eine Verknüpfung mit Slack herzustellen. Funktioniert mit vielen anderen Apps.

Slack連携.png

Recommended Posts

Sammeln von Clientinformationen, wenn in einer Webanwendung ein Fehler auftritt
Eine Erinnerung, wenn ein aapt.exe-Fehler auftritt
Bei Verwendung einer Liste in Java wird java.awt.List ausgegeben und ein Fehler tritt auf
Ein Fehler tritt auf, wenn codedeploy-agent in Ubuntu Server 20.04 installiert ist
Erstellen wir eine TODO-Anwendung mit Java 12-Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod eingeht. ・ Verarbeitung, wenn ein Fehler auf dem Server auftritt
Was tun, wenn in einer Lightweight-JRE eine UnsupportedCharsetException auftritt?
Beim Hinzufügen einer Abhängigkeit wird eine Fehlermeldung angezeigt
[Rails] Lösung, wenn ein Migrationsfehler in Acts-as-Taggable-On auftritt
Ich habe eine Frage. Beim Abspielen eines Videos in Listview mit Android tritt ein Fehler auf.
[Review] Beim Erstellen einer Webanwendung mit Rails, Syntaxfehler, unerwartetes ')', Erwartung => ...]}% ","% # {params [: content]}% "]) ...
Passen Sie die Anzeige an, wenn im Spring Boot ein Fehler wie 404 Not Found auftritt
[Nicht gelöst] Eine Ausnahme tritt auf, wenn eine SSH-Verbindung mit JSch aus einer Java 6-App ausgeführt wird.
Beheben Sie den CreateProcess-Fehler = 206, wenn Sie Java in einer Windows-Umgebung ausführen
Wenn ein Fehler auftritt, obwohl die Validierung nicht festgelegt ist
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Was tun, wenn beim Installieren von Axios in einem React + Typescript-Projekt ein Fehler auftritt?
Swift: Eine Falle zum Festlegen mehrerer Anfangselemente in einem Array
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Vorbereitung]
Nach dem Wechsel zwischen Java 8 und 11 tritt bei der Bestätigung ein Fehler auf
Lösungshinweise, wenn beim Herunterladen von Docker-GPG mit Curl ein Fehler auftritt
Was ist der Unterschied zwischen einem Webserver und einem Anwendungsserver?
Vereinfachte Version der Zahlenberechnung durch Sammeln von Informationen in einer Instanz
Es sollte mit dem Beispiel identisch sein, wenn Sie sich bei Twitter anmelden, es tritt jedoch ein Fehler auf, bis die Lösung behoben ist
Erstellen Sie eine Webanwendung mit Javalin
Implementieren Sie den gRPC-Client in Ruby
[Nicht autorisierter Vorgang] Ein Memorandum, da beim Erstellen einer EC2-Instanz ein Fehler aufgetreten ist.
Automatische Bereitstellung von in Java entwickelten Webanwendungen mit Jenkins [Spring Boot App Edition]
Was tun, wenn ein Fehler auftritt, wenn nokogiri bei der Bundle-Installation eingeht?
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
So migrieren Sie eine in einer lokalen Docker-Umgebung erstellte Webanwendung nach AWS
Machen Sie den Kontextstamm zum Projektordner im dynamischen Webprojekt von Eclipse
Hinweise zur Vorgehensweise beim Auftreten einer WebView ClassNotFoundException in JavaFX 12
Worauf habe ich mich vorbereitet, als ich während der Entwicklung des Web mit Java in ein Android-Anwendungsentwicklungsprojekt eingetreten bin?
Beim Ausführen einer Funktion in PostgreSQL mit dem Parameter OUT von MyBatis auf CURSOR ist ein Fehler aufgetreten.