42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/getsentry/raven-go"
|
|
"log"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
func trace() *raven.Stacktrace {
|
|
return raven.NewStacktrace(0, 2, nil)
|
|
}
|
|
|
|
func main() {
|
|
client, err := raven.NewWithTags(os.Args[1], map[string]string{"foo": "bar"})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
httpReq, _ := http.NewRequest("GET", "http://example.com/foo?bar=true", nil)
|
|
httpReq.RemoteAddr = "127.0.0.1:80"
|
|
httpReq.Header = http.Header{"Content-Type": {"text/html"}, "Content-Length": {"42"}}
|
|
packet := &raven.Packet{Message: "Test report", Interfaces: []raven.Interface{raven.NewException(errors.New("example"), trace()), raven.NewHttp(httpReq)}}
|
|
_, ch := client.Capture(packet, nil)
|
|
if err = <-ch; err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
log.Print("sent packet successfully")
|
|
}
|
|
|
|
// CheckError sends error report to sentry and records event id and error name to the logs
|
|
func CheckError(err error, r *http.Request) {
|
|
client, err := raven.NewWithTags(os.Args[1], map[string]string{"foo": "bar"})
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
packet := raven.NewPacket(err.Error(), raven.NewException(err, trace()), raven.NewHttp(r))
|
|
eventID, _ := client.Capture(packet, nil)
|
|
message := fmt.Sprintf("Error event with id \"%s\" - %s", eventID, err.Error())
|
|
log.Println(message)
|
|
}
|