-
Notifications
You must be signed in to change notification settings - Fork 0
/
observer.go
50 lines (41 loc) · 1.21 KB
/
observer.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
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package metrics
import (
"github.com/hyperledger/fabric/common/metrics"
"go.uber.org/zap/zapcore"
)
var (
CheckedCountOpts = metrics.CounterOpts{
Namespace: "logging",
Name: "entries_checked",
Help: "Number of log entries checked against the active logging level",
LabelNames: []string{"level"},
StatsdFormat: "%{#fqname}.%{level}",
}
WriteCountOpts = metrics.CounterOpts{
Namespace: "logging",
Name: "entries_written",
Help: "Number of log entries that are written",
LabelNames: []string{"level"},
StatsdFormat: "%{#fqname}.%{level}",
}
)
type Observer struct {
CheckedCounter metrics.Counter
WrittenCounter metrics.Counter
}
func NewObserver(provider metrics.Provider) *Observer {
return &Observer{
CheckedCounter: provider.NewCounter(CheckedCountOpts),
WrittenCounter: provider.NewCounter(WriteCountOpts),
}
}
func (m *Observer) Check(e zapcore.Entry, ce *zapcore.CheckedEntry) {
m.CheckedCounter.With("level", e.Level.String()).Add(1)
}
func (m *Observer) WriteEntry(e zapcore.Entry, fields []zapcore.Field) {
m.WrittenCounter.With("level", e.Level.String()).Add(1)
}