frostfs-node/pkg/util/logger/log.go
Anton Nikiforov cacf3dc113 [#1619] logger: Filter entries by tags provided in config
Change-Id: Ia2a79d6cb2a5eb263fb2e6db3f9cf9f2a7d57118
Signed-off-by: Anton Nikiforov <an.nikiforov@yadro.com>
2025-03-21 10:32:10 +03:00

56 lines
1.4 KiB
Go

package logger
import (
"context"
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/tracing"
qos "git.frostfs.info/TrueCloudLab/frostfs-qos/tagging"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
func (l *Logger) Debug(ctx context.Context, msg string, fields ...zap.Field) {
if l.denyLogEntry(zapcore.DebugLevel) {
return
}
l.z.Debug(msg, appendContext(ctx, fields...)...)
}
func (l *Logger) Info(ctx context.Context, msg string, fields ...zap.Field) {
if l.denyLogEntry(zapcore.InfoLevel) {
return
}
l.z.Info(msg, appendContext(ctx, fields...)...)
}
func (l *Logger) Warn(ctx context.Context, msg string, fields ...zap.Field) {
if l.denyLogEntry(zapcore.WarnLevel) {
return
}
l.z.Warn(msg, appendContext(ctx, fields...)...)
}
func (l *Logger) Error(ctx context.Context, msg string, fields ...zap.Field) {
if l.denyLogEntry(zapcore.ErrorLevel) {
return
}
l.z.Error(msg, appendContext(ctx, fields...)...)
}
func appendContext(ctx context.Context, fields ...zap.Field) []zap.Field {
if traceID := tracing.GetTraceID(ctx); traceID != "" {
fields = append(fields, zap.String("trace_id", traceID))
}
if ioTag, ioTagDefined := qos.IOTagFromContext(ctx); ioTagDefined {
fields = append(fields, zap.String("io_tag", ioTag))
}
return fields
}
func (l *Logger) denyLogEntry(level zapcore.Level) bool {
tl := l.tl.Load().(map[Tag]zapcore.Level)
if lvl, ok := tl[l.t]; ok {
return level < lvl
}
return level < l.lvl.Level()
}