1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-02-09 13:36:57 +02:00
Windfarer 9860d59ca7
feat(middleware): adding sentry as errortracker (#3122)
* init sentry

* rename var

* fix ctx key

* fix key

* update readme

* add test

* fix ctx args position

* update readme

* use sprintf

* update readme

* fix readme

* fix fmt

* add ut

* refactoring get hub

* fix docs

* fix get hub nil

* Update README.md

* fix alias
2024-01-18 13:54:37 +08:00
..

Sentry middleware for Kratos

This middleware helps you to catch panics and report them to sentry

Quick Start

You could check the full demo in example folder.

// Step 1: 
// init sentry in the entry of your application
import "github.com/getsentry/sentry-go"

sentry.Init(sentry.ClientOptions{
		Dsn: "<your dsn>",
		AttachStacktrace: true, // recommended
})


// Step 2: 
// set middleware
import 	ksentry "github.com/go-kratos/kratos/contrib/errortracker/sentry/v2"

// for HTTP server, new HTTP server with sentry middleware options
var opts = []http.ServerOption{
	http.Middleware(
		recovery.Recovery(),
		tracing.Server(),
		ksentry.Server(ksentry.WithTags(map[string]interface{}{
			"tag": "some-custom-constant-tag",
			"trace_id": tracing.TraceID(), // If you want to use the TraceID valuer, you need to place it after the A middleware.
		})), // must after Recovery middleware, because of the exiting order will be reversed
		
		logging.Server(logger), 
	),
}

// for gRPC server, new gRPC server with sentry middleware options
var opts = []grpc.ServerOption{
     grpc.Middleware(
		recovery.Recovery(),
		tracing.Server(),
		ksentry.Server(ksentry.WithTags(map[string]interface{}{
			"tag": "some-custom-constant-tag",
			"trace_id": tracing.TraceID(), // If you want to use the TraceID valuer, you need to place it after the A middleware.
		})), // must after Recovery middleware, because of the exiting order will be reversed
		logging.Server(logger),
     ),
 }


// Then, the framework will report events to Sentry when your trigger panics.
// Or your can push events to Sentry manually

Reference