go_study/fabric-main/common/flogging/metrics/observer.go

51 lines
1.2 KiB
Go

/*
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)
}