2025-10-24 00:09:45 +08:00
|
|
|
|
package logger
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2025-10-27 23:12:15 +08:00
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 结构体定义
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// Logger 日志工具结构体
|
|
|
|
|
|
// 封装logrus.Logger,提供统一的日志接口
|
|
|
|
|
|
type Logger struct {
|
|
|
|
|
|
*log.Logger // 嵌入logrus.Logger,继承其所有方法
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-27 23:12:15 +08:00
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 构造函数
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// NewLogger 创建新的日志实例,使用全局logrus配置
|
|
|
|
|
|
// 返回: 新的Logger实例
|
|
|
|
|
|
func NewLogger() *Logger {
|
|
|
|
|
|
// 使用全局logrus实例而不是创建新实例,确保配置一致性
|
|
|
|
|
|
return &Logger{Logger: log.StandardLogger()}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// InitLogger 初始化HTTP日志处理器
|
|
|
|
|
|
// 创建专门用于HTTP请求日志的Logger实例,使用全局logrus配置
|
|
|
|
|
|
// 返回: 初始化后的Logger实例
|
|
|
|
|
|
func InitLogger() *Logger {
|
|
|
|
|
|
logger := NewLogger()
|
|
|
|
|
|
|
|
|
|
|
|
// HTTP日志使用全局logrus的配置
|
|
|
|
|
|
// 通过使用log.StandardLogger()确保与全局配置保持一致
|
|
|
|
|
|
|
|
|
|
|
|
// 更新全局日志实例
|
|
|
|
|
|
SetGlobalLogger(logger)
|
|
|
|
|
|
|
|
|
|
|
|
return logger
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-27 23:12:15 +08:00
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 方法函数
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// WithFields 添加字段到日志条目
|
|
|
|
|
|
// fields: 要添加的字段映射
|
|
|
|
|
|
// 返回: 包含字段的日志条目
|
|
|
|
|
|
func (l *Logger) WithFields(fields log.Fields) *log.Entry {
|
|
|
|
|
|
return l.Logger.WithFields(fields)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// WithField 添加单个字段到日志条目
|
|
|
|
|
|
// key: 字段名
|
|
|
|
|
|
// value: 字段值
|
|
|
|
|
|
// 返回: 包含字段的日志条目
|
|
|
|
|
|
func (l *Logger) WithField(key string, value interface{}) *log.Entry {
|
|
|
|
|
|
return l.Logger.WithField(key, value)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// WithError 添加错误字段到日志条目
|
|
|
|
|
|
// err: 要记录的错误
|
|
|
|
|
|
// 返回: 包含错误信息的日志条目
|
|
|
|
|
|
func (l *Logger) WithError(err error) *log.Entry {
|
|
|
|
|
|
return l.Logger.WithError(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// InfoWithFields 记录带字段的信息级别日志
|
|
|
|
|
|
// msg: 日志消息
|
|
|
|
|
|
// fields: 附加字段
|
|
|
|
|
|
func (l *Logger) InfoWithFields(msg string, fields log.Fields) {
|
|
|
|
|
|
l.WithFields(fields).Info(msg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ErrorWithFields 记录带字段的错误级别日志
|
|
|
|
|
|
// msg: 日志消息
|
|
|
|
|
|
// fields: 附加字段
|
|
|
|
|
|
func (l *Logger) ErrorWithFields(msg string, fields log.Fields) {
|
|
|
|
|
|
l.WithFields(fields).Error(msg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// WarnWithFields 记录带字段的警告级别日志
|
|
|
|
|
|
// msg: 日志消息
|
|
|
|
|
|
// fields: 附加字段
|
|
|
|
|
|
func (l *Logger) WarnWithFields(msg string, fields log.Fields) {
|
|
|
|
|
|
l.WithFields(fields).Warn(msg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// DebugWithFields 记录带字段的调试级别日志
|
|
|
|
|
|
// msg: 日志消息
|
|
|
|
|
|
// fields: 附加字段
|
|
|
|
|
|
func (l *Logger) DebugWithFields(msg string, fields log.Fields) {
|
|
|
|
|
|
l.WithFields(fields).Debug(msg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// LogError 记录错误日志
|
|
|
|
|
|
// err: 错误对象
|
|
|
|
|
|
// msg: 日志消息
|
|
|
|
|
|
func (l *Logger) LogError(err error, msg string) {
|
|
|
|
|
|
l.WithError(err).Error(msg)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-27 23:12:15 +08:00
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 全局变量
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// GlobalLogger 全局日志实例
|
|
|
|
|
|
// 提供全局访问的日志记录器
|
|
|
|
|
|
var GlobalLogger *Logger
|
|
|
|
|
|
|
|
|
|
|
|
// init 包初始化函数
|
|
|
|
|
|
// 创建全局日志实例,使用全局logrus配置
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
GlobalLogger = NewLogger()
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-10-27 23:12:15 +08:00
|
|
|
|
// ============================================================================
|
|
|
|
|
|
// 全局函数
|
|
|
|
|
|
// ============================================================================
|
|
|
|
|
|
|
2025-10-24 00:09:45 +08:00
|
|
|
|
// GetLogger 获取全局日志实例
|
|
|
|
|
|
// 返回: 全局Logger实例
|
|
|
|
|
|
func GetLogger() *Logger {
|
|
|
|
|
|
return GlobalLogger
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// SetGlobalLogger 设置全局日志实例
|
|
|
|
|
|
// logger: 要设置的Logger实例
|
|
|
|
|
|
func SetGlobalLogger(logger *Logger) {
|
|
|
|
|
|
GlobalLogger = logger
|
2025-10-27 23:12:15 +08:00
|
|
|
|
}
|