/
logger_handler.go
69 lines (56 loc) · 1.24 KB
/
logger_handler.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
package metric
import (
"time"
"github.com/justtrackio/gosoline/pkg/cfg"
"github.com/justtrackio/gosoline/pkg/log"
)
func init() {
log.AddHandlerFactory("metric", LoggerHandlerFactory)
}
func LoggerHandlerFactory(_ cfg.Config, _ string) (log.Handler, error) {
return NewLoggerHandler(), nil
}
func NewLoggerHandler() *LoggerHandler {
defaults := getDefaultMetrics()
metricWriter := NewWriter(defaults...)
return &LoggerHandler{
writer: metricWriter,
}
}
type LoggerHandler struct {
writer Writer
}
func (h LoggerHandler) Channels() []string {
return []string{}
}
func (h LoggerHandler) Level() int {
return log.PriorityWarn
}
func (h LoggerHandler) Log(_ time.Time, level int, _ string, _ []interface{}, _ error, _ log.Data) error {
if level != log.PriorityWarn && level != log.PriorityError {
return nil
}
h.writer.WriteOne(&Datum{
Priority: PriorityHigh,
MetricName: log.LevelName(level),
Unit: UnitCount,
Value: 1.0,
})
return nil
}
func getDefaultMetrics() Data {
return Data{
{
Priority: PriorityHigh,
MetricName: log.LevelError,
Unit: UnitCount,
Value: 0.0,
},
{
Priority: PriorityHigh,
MetricName: log.LevelWarn,
Unit: UnitCount,
Value: 0.0,
},
}
}