forked from Meituan-Dianping/cat-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cat_api.go
101 lines (84 loc) · 1.86 KB
/
cat_api.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package cat
import (
"time"
"github.com/Meituan-Dianping/cat-go/message"
)
func NewTransaction(mtype, name string) message.Transactor {
if !IsEnabled() {
return &message.NullTransaction{}
}
return message.NewTransaction(mtype, name, manager.flush)
}
func NewCompletedTransactionWithDuration(mtype, name string, duration time.Duration) {
if !IsEnabled() {
return
}
var trans = NewTransaction(mtype, name)
trans.SetDuration(duration)
if duration > 0 && duration < 60*time.Millisecond {
trans.SetTime(time.Now().Add(-duration))
}
trans.SetStatus(message.CatSuccess)
trans.Complete()
}
func NewEvent(mtype, name string) message.Messager {
if !IsEnabled() {
return &message.NullMessage{}
}
return message.NewEvent(mtype, name, manager.flush)
}
func LogEvent(mtype, name string, args ...string) {
if !IsEnabled() {
return
}
var e = NewEvent(mtype, name)
if len(args) > 0 {
e.SetStatus(args[0])
}
if len(args) > 1 {
e.SetData(args[1])
}
e.Complete()
}
func LogError(err error, args ...string) {
if !IsEnabled() {
return
}
var category = "CAT_ERROR"
if len(args) > 0 {
category = args[0]
}
LogErrorWithCategory(err, category)
}
func LogErrorWithCategory(err error, category string) {
if !IsEnabled() {
return
}
var event = NewEvent("Error", category)
var buf = newStacktrace(2, err)
event.SetStatus(message.CatError)
event.SetData(buf.String())
event.Complete()
}
func LogMetricForCount(name string, args ...int) {
if !IsEnabled() {
return
}
if len(args) == 0 {
aggregator.metric.AddCount(name, 1)
} else {
aggregator.metric.AddCount(name, args[0])
}
}
func LogMetricForDuration(name string, duration time.Duration) {
if !IsEnabled() {
return
}
aggregator.metric.AddDuration(name, duration)
}
func NewMetricHelper(name string) MetricHelper {
if !IsEnabled() {
return &nullMetricHelper{}
}
return newMetricHelper(name)
}