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() }