-
Notifications
You must be signed in to change notification settings - Fork 0
/
rollbar.go
61 lines (52 loc) · 1.22 KB
/
rollbar.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Package rollbar implements a JSON handler.
package rollbar
import (
log "github.com/phogolabs/log"
rollbar "github.com/rollbar/rollbar-go"
)
// Client that connects to rollbar
type Client interface {
MessageWithExtras(level string, msg string, extras map[string]interface{})
}
// Config is the configuration of the handler
type Config struct {
Token string
Environment string
CodeVersion string
ServerHost string
ServerRoot string
}
var _ log.Handler = &Handler{}
// Handler implementation.
type Handler struct {
Client Client
}
// New returns the default implementation of a Client.
func New(config *Config) *Handler {
return &Handler{
Client: rollbar.NewAsync(
config.Token,
config.Environment,
config.CodeVersion,
config.ServerHost,
config.ServerRoot,
),
}
}
// Handle handles the log entry
func (h *Handler) Handle(e *log.Entry) {
var level string
switch e.Level {
case log.DebugLevel:
level = rollbar.DEBUG
case log.InfoLevel:
level = rollbar.INFO
case log.NoticeLevel, log.WarnLevel:
level = rollbar.WARN
case log.ErrorLevel:
level = rollbar.ERR
case log.PanicLevel, log.AlertLevel, log.FatalLevel:
level = rollbar.CRIT
}
h.Client.MessageWithExtras(level, e.Message, e.Fields)
}