Files
NetworkAuth/utils/logger/logger.go

133 lines
3.8 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package logger
import (
log "github.com/sirupsen/logrus"
)
// ============================================================================
// 结构体定义
// ============================================================================
// Logger 日志工具结构体
// 封装logrus.Logger提供统一的日志接口
type Logger struct {
*log.Logger // 嵌入logrus.Logger继承其所有方法
}
// ============================================================================
// 构造函数
// ============================================================================
// 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
}
// ============================================================================
// 方法函数
// ============================================================================
// 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)
}
// ============================================================================
// 全局变量
// ============================================================================
// GlobalLogger 全局日志实例
// 提供全局访问的日志记录器
var GlobalLogger *Logger
// init 包初始化函数
// 创建全局日志实例使用全局logrus配置
func init() {
GlobalLogger = NewLogger()
}
// ============================================================================
// 全局函数
// ============================================================================
// GetLogger 获取全局日志实例
// 返回: 全局Logger实例
func GetLogger() *Logger {
return GlobalLogger
}
// SetGlobalLogger 设置全局日志实例
// logger: 要设置的Logger实例
func SetGlobalLogger(logger *Logger) {
GlobalLogger = logger
}