修复bug
This commit is contained in:
153
internal/infra/logs/logger_methods.go
Normal file
153
internal/infra/logs/logger_methods.go
Normal file
@@ -0,0 +1,153 @@
|
||||
package logs
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
// logWithTrace 是一个私有的辅助函数,用于统一处理日志记录。
|
||||
// 它会检查 logger 实例中是否包含 traceValue,如果存在,则将其作为最后一个结构化字段追加。
|
||||
// 然后,它根据传入的日志级别,调用底层 SugaredLogger 对应级别的 '...w' 方法。
|
||||
func (l *Logger) logWithTrace(level zapcore.Level, msg string, keysAndValues ...interface{}) {
|
||||
// 如果存在调用链信息,则将其追加到键值对列表的末尾
|
||||
if l.traceValue != "" {
|
||||
keysAndValues = append(keysAndValues, traceKey, l.traceValue)
|
||||
}
|
||||
|
||||
// 根据级别调用相应的 '...w' 方法
|
||||
switch level {
|
||||
case zapcore.DebugLevel:
|
||||
l.sl.Debugw(msg, keysAndValues...)
|
||||
case zapcore.InfoLevel:
|
||||
l.sl.Infow(msg, keysAndValues...)
|
||||
case zapcore.WarnLevel:
|
||||
l.sl.Warnw(msg, keysAndValues...)
|
||||
case zapcore.ErrorLevel:
|
||||
l.sl.Errorw(msg, keysAndValues...)
|
||||
case zapcore.DPanicLevel:
|
||||
l.sl.DPanicw(msg, keysAndValues...)
|
||||
case zapcore.PanicLevel:
|
||||
l.sl.Panicw(msg, keysAndValues...)
|
||||
case zapcore.FatalLevel:
|
||||
l.sl.Fatalw(msg, keysAndValues...)
|
||||
}
|
||||
}
|
||||
|
||||
// --- 重写所有日志记录方法 ---
|
||||
|
||||
// Debug 使用 fmt.Sprint 格式化参数并记录 Debug 级别的日志。
|
||||
func (l *Logger) Debug(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.DebugLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Info 使用 fmt.Sprint 格式化参数并记录 Info 级别的日志。
|
||||
func (l *Logger) Info(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.InfoLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Warn 使用 fmt.Sprint 格式化参数并记录 Warn 级别的日志。
|
||||
func (l *Logger) Warn(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.WarnLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Error 使用 fmt.Sprint 格式化参数并记录 Error 级别的日志。
|
||||
func (l *Logger) Error(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.ErrorLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// DPanic 使用 fmt.Sprint 格式化参数并记录 DPanic 级别的日志。
|
||||
func (l *Logger) DPanic(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.DPanicLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Panic 使用 fmt.Sprint 格式化参数并记录 Panic 级别的日志。
|
||||
func (l *Logger) Panic(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.PanicLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Fatal 使用 fmt.Sprint 格式化参数并记录 Fatal 级别的日志。
|
||||
func (l *Logger) Fatal(args ...interface{}) {
|
||||
l.logWithTrace(zapcore.FatalLevel, fmt.Sprint(args...))
|
||||
}
|
||||
|
||||
// Debugf 使用 fmt.Sprintf 格式化模板和参数,并记录 Debug 级别的日志。
|
||||
func (l *Logger) Debugf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.DebugLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Infof 使用 fmt.Sprintf 格式化模板和参数,并记录 Info 级别的日志。
|
||||
func (l *Logger) Infof(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.InfoLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Warnf 使用 fmt.Sprintf 格式化模板和参数,并记录 Warn 级别的日志。
|
||||
func (l *Logger) Warnf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.WarnLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Errorf 使用 fmt.Sprintf 格式化模板和参数,并记录 Error 级别的日志。
|
||||
func (l *Logger) Errorf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.ErrorLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// DPanicf 使用 fmt.Sprintf 格式化模板和参数,并记录 DPanic 级别的日志。
|
||||
func (l *Logger) DPanicf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.DPanicLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Panicf 使用 fmt.Sprintf 格式化模板和参数,并记录 Panic 级别的日志。
|
||||
func (l *Logger) Panicf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.PanicLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Fatalf 使用 fmt.Sprintf 格式化模板和参数,并记录 Fatal 级别的日志。
|
||||
func (l *Logger) Fatalf(template string, args ...interface{}) {
|
||||
l.logWithTrace(zapcore.FatalLevel, fmt.Sprintf(template, args...))
|
||||
}
|
||||
|
||||
// Debugw 记录 Debug 级别的结构化日志。
|
||||
func (l *Logger) Debugw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.DebugLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// Infow 记录 Info 级别的结构化日志。
|
||||
func (l *Logger) Infow(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.InfoLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// Warnw 记录 Warn 级别的结构化日志。
|
||||
func (l *Logger) Warnw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.WarnLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// Errorw 记录 Error 级别的结构化日志。
|
||||
func (l *Logger) Errorw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.ErrorLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// DPanicw 记录 DPanic 级别的结构化日志。
|
||||
func (l *Logger) DPanicw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.DPanicLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// Panicw 记录 Panic 级别的结构化日志。
|
||||
func (l *Logger) Panicw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.PanicLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// Fatalw 记录 Fatal 级别的结构化日志。
|
||||
func (l *Logger) Fatalw(msg string, keysAndValues ...interface{}) {
|
||||
l.logWithTrace(zapcore.FatalLevel, msg, keysAndValues...)
|
||||
}
|
||||
|
||||
// With 在 zap 中,With 方法返回的是一个新的 SugaredLogger。
|
||||
// 为了保持兼容性并继续传递 traceValue,我们需要在这里也返回一个新的 Logger 实例。
|
||||
func (l *Logger) With(args ...interface{}) *Logger {
|
||||
newSl := l.sl.With(args...)
|
||||
return &Logger{sl: newSl, traceValue: l.traceValue}
|
||||
}
|
||||
|
||||
func (l *Logger) Sync() error {
|
||||
return l.sl.Sync()
|
||||
}
|
||||
Reference in New Issue
Block a user