woodpecker/vendor/github.com/getsentry/raven-go/example/example.go
2015-09-29 18:21:17 -07:00

43 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)
}