*: raven is archived, long live sentry-go
I don't have sentry set up to test this, but it looks like it is migrated correctly. Signed-off-by: Vincent Batts <vbatts@hashbangbash.com>
This commit is contained in:
parent
f9ceebad58
commit
cabf16cc0a
97 changed files with 4518 additions and 12599 deletions
392
vendor/github.com/getsentry/sentry-go/MIGRATION.md
generated
vendored
Normal file
392
vendor/github.com/getsentry/sentry-go/MIGRATION.md
generated
vendored
Normal file
|
@ -0,0 +1,392 @@
|
|||
# `raven-go` to `sentry-go` Migration Guide
|
||||
|
||||
## Installation
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
go get github.com/getsentry/raven-go
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
go get github.com/getsentry/sentry-go@v0.0.1
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
import "github.com/getsentry/raven-go"
|
||||
|
||||
func main() {
|
||||
raven.SetDSN("___PUBLIC_DSN___")
|
||||
}
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/getsentry/sentry-go"
|
||||
)
|
||||
|
||||
func main() {
|
||||
err := sentry.Init(sentry.ClientOptions{
|
||||
Dsn: "___PUBLIC_DSN___",
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Sentry initialization failed: %v\n", err)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
SetDSN()
|
||||
SetDefaultLoggerName()
|
||||
SetDebug()
|
||||
SetEnvironment()
|
||||
SetRelease()
|
||||
SetSampleRate()
|
||||
SetIgnoreErrors()
|
||||
SetIncludePaths()
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.Init(sentry.ClientOptions{
|
||||
Dsn: "___PUBLIC_DSN___",
|
||||
DebugWriter: os.Stderr,
|
||||
Debug: true,
|
||||
Environment: "environment",
|
||||
Release: "release",
|
||||
SampleRate: 0.5,
|
||||
// IgnoreErrors: TBD,
|
||||
// IncludePaths: TBD
|
||||
})
|
||||
```
|
||||
|
||||
Available options: see [Configuration](https://docs.sentry.io/platforms/go/config/) section.
|
||||
|
||||
### Providing SSL Certificates
|
||||
|
||||
By default, TLS uses the host's root CA set. If you don't have `ca-certificates` (which should be your go-to way of fixing the issue of missing certificates) and want to use `gocertifi` instead, you can provide pre-loaded cert files as one of the options to the `sentry.Init` call:
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/certifi/gocertifi"
|
||||
"github.com/getsentry/sentry-go"
|
||||
)
|
||||
|
||||
sentryClientOptions := sentry.ClientOptions{
|
||||
Dsn: "___PUBLIC_DSN___",
|
||||
}
|
||||
|
||||
rootCAs, err := gocertifi.CACerts()
|
||||
if err != nil {
|
||||
log.Println("Couldn't load CA Certificates: %v\n", err)
|
||||
} else {
|
||||
sentryClientOptions.CaCerts = rootCAs
|
||||
}
|
||||
|
||||
sentry.Init(sentryClientOptions)
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Capturing Errors
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
f, err := os.Open("filename.ext")
|
||||
if err != nil {
|
||||
raven.CaptureError(err, nil)
|
||||
}
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
f, err := os.Open("filename.ext")
|
||||
if err != nil {
|
||||
sentry.CaptureException(err)
|
||||
}
|
||||
```
|
||||
|
||||
### Capturing Panics
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.CapturePanic(func() {
|
||||
// do all of the scary things here
|
||||
}, nil)
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
func() {
|
||||
defer sentry.Recover()
|
||||
// do all of the scary things here
|
||||
}()
|
||||
```
|
||||
|
||||
### Capturing Messages
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.CaptureMessage("Something bad happened and I would like to know about that")
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.CaptureMessage("Something bad happened and I would like to know about that")
|
||||
```
|
||||
|
||||
### Capturing Events
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
packet := &raven.Packet{
|
||||
Message: "Hand-crafted event",
|
||||
Extra: &raven.Extra{
|
||||
"runtime.Version": runtime.Version(),
|
||||
"runtime.NumCPU": runtime.NumCPU(),
|
||||
},
|
||||
}
|
||||
raven.Capture(packet)
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
event := &sentry.NewEvent()
|
||||
event.Message = "Hand-crafted event"
|
||||
event.Extra["runtime.Version"] = runtime.Version()
|
||||
event.Extra["runtime.NumCPU"] = runtime.NumCPU()
|
||||
|
||||
sentry.CaptureEvent(event)
|
||||
```
|
||||
|
||||
### Additional Data
|
||||
|
||||
See Context section.
|
||||
|
||||
### Event Sampling
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.SetSampleRate(0.25)
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.Init(sentry.ClientOptions{
|
||||
SampleRate: 0.25,
|
||||
})
|
||||
```
|
||||
|
||||
### Awaiting the response (not recommended)
|
||||
|
||||
```go
|
||||
raven.CaptureMessageAndWait("Something bad happened and I would like to know about that")
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.CaptureMessage("Something bad happened and I would like to know about that")
|
||||
|
||||
if sentry.Flush(time.Second * 2) {
|
||||
// event delivered
|
||||
} else {
|
||||
// timeout reached
|
||||
}
|
||||
```
|
||||
|
||||
## Context
|
||||
|
||||
### Per-event
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.CaptureError(err, map[string]string{"browser": "Firefox"}, &raven.Http{
|
||||
Method: "GET",
|
||||
URL: "https://example.com/raven-go"
|
||||
})
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.WithScope(func(scope *sentry.Scope) {
|
||||
scope.SetTag("browser", "Firefox")
|
||||
scope.SetContext("Request", map[string]string{
|
||||
"Method": "GET",
|
||||
"URL": "https://example.com/raven-go",
|
||||
})
|
||||
sentry.CaptureException(err)
|
||||
})
|
||||
```
|
||||
|
||||
### Globally
|
||||
|
||||
#### SetHttpContext
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.SetHttpContext(&raven.Http{
|
||||
Method: "GET",
|
||||
URL: "https://example.com/raven-go",
|
||||
})
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||
scope.SetContext("Request", map[string]string{
|
||||
"Method": "GET",
|
||||
"URL": "https://example.com/raven-go",
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
#### SetTagsContext
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
t := map[string]string{"day": "Friday", "sport": "Weightlifting"}
|
||||
raven.SetTagsContext(map[string]string{"day": "Friday", "sport": "Weightlifting"})
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||
scope.SetTags(map[string]string{"day": "Friday", "sport": "Weightlifting"})
|
||||
})
|
||||
```
|
||||
|
||||
#### SetUserContext
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.SetUserContext(&raven.User{
|
||||
ID: "1337",
|
||||
Username: "kamilogorek",
|
||||
Email: "kamil@sentry.io",
|
||||
IP: "127.0.0.1",
|
||||
})
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||
scope.SetUser(sentry.User{
|
||||
ID: "1337",
|
||||
Username: "kamilogorek",
|
||||
Email: "kamil@sentry.io",
|
||||
IPAddress: "127.0.0.1",
|
||||
})
|
||||
})
|
||||
```
|
||||
|
||||
#### ClearContext
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
raven.ClearContext()
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentry.ConfigureScope(func(scope *sentry.Scope) {
|
||||
scope.Clear()
|
||||
})
|
||||
```
|
||||
|
||||
#### WrapWithExtra
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
path := "filename.ext"
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
err = raven.WrapWithExtra(err, map[string]string{"path": path, "cwd": os.Getwd()}
|
||||
raven.CaptureError(err, nil)
|
||||
}
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
// use `sentry.WithScope`, see "Context / Per-event Section"
|
||||
path := "filename.ext"
|
||||
f, err := os.Open(path)
|
||||
if err != nil {
|
||||
sentry.WithScope(func(scope *sentry.Scope) {
|
||||
sentry.SetExtras(map[string]interface{}{"path": path, "cwd": os.Getwd())
|
||||
sentry.CaptureException(err)
|
||||
})
|
||||
}
|
||||
```
|
||||
|
||||
## Integrations
|
||||
|
||||
### net/http
|
||||
|
||||
raven-go
|
||||
|
||||
```go
|
||||
mux := http.NewServeMux
|
||||
http.Handle("/", raven.Recoverer(mux))
|
||||
|
||||
// or
|
||||
|
||||
func root(w http.ResponseWriter, r *http.Request) {}
|
||||
http.HandleFunc("/", raven.RecoveryHandler(root))
|
||||
```
|
||||
|
||||
sentry-go
|
||||
|
||||
```go
|
||||
sentryHandler := sentryhttp.New(sentryhttp.Options{
|
||||
Repanic: false,
|
||||
WaitForDelivery: true,
|
||||
})
|
||||
|
||||
mux := http.NewServeMux
|
||||
http.Handle("/", sentryHandler.Handle(mux))
|
||||
|
||||
// or
|
||||
|
||||
func root(w http.ResponseWriter, r *http.Request) {}
|
||||
http.HandleFunc("/", sentryHandler.HandleFunc(root))
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue