feat():learning后台管理项目初始化
This commit is contained in:
98
pkg/utils/logger.go
Normal file
98
pkg/utils/logger.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
// Logger 日志管理器
|
||||
type Logger struct {
|
||||
*zap.Logger
|
||||
}
|
||||
|
||||
// NewLogger 创建日志实例
|
||||
func NewLogger(level, format, output string) (*Logger, error) {
|
||||
// 设置日志级别
|
||||
var zapLevel zapcore.Level
|
||||
switch level {
|
||||
case "debug":
|
||||
zapLevel = zapcore.DebugLevel
|
||||
case "info":
|
||||
zapLevel = zapcore.InfoLevel
|
||||
case "warn":
|
||||
zapLevel = zapcore.WarnLevel
|
||||
case "error":
|
||||
zapLevel = zapcore.ErrorLevel
|
||||
default:
|
||||
zapLevel = zapcore.InfoLevel
|
||||
}
|
||||
|
||||
// 设置编码格式
|
||||
var encoderConfig zapcore.EncoderConfig
|
||||
if format == "json" {
|
||||
encoderConfig = zap.NewProductionEncoderConfig()
|
||||
} else {
|
||||
encoderConfig = zap.NewDevelopmentEncoderConfig()
|
||||
}
|
||||
|
||||
// 设置时间格式
|
||||
encoderConfig.TimeKey = "timestamp"
|
||||
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
||||
|
||||
// 创建配置
|
||||
config := zap.Config{
|
||||
Level: zap.NewAtomicLevelAt(zapLevel),
|
||||
Development: format != "json",
|
||||
Encoding: format,
|
||||
EncoderConfig: encoderConfig,
|
||||
OutputPaths: []string{output},
|
||||
ErrorOutputPaths: []string{output},
|
||||
}
|
||||
|
||||
// 创建logger
|
||||
logger, err := config.Build()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &Logger{Logger: logger}, nil
|
||||
}
|
||||
|
||||
// Info 记录信息日志
|
||||
func (l *Logger) Info(msg string, fields ...zap.Field) {
|
||||
l.Logger.Info(msg, fields...)
|
||||
}
|
||||
|
||||
// Debug 记录调试日志
|
||||
func (l *Logger) Debug(msg string, fields ...zap.Field) {
|
||||
l.Logger.Debug(msg, fields...)
|
||||
}
|
||||
|
||||
// Warn 记录警告日志
|
||||
func (l *Logger) Warn(msg string, fields ...zap.Field) {
|
||||
l.Logger.Warn(msg, fields...)
|
||||
}
|
||||
|
||||
// Error 记录错误日志
|
||||
func (l *Logger) Error(msg string, fields ...zap.Field) {
|
||||
l.Logger.Error(msg, fields...)
|
||||
}
|
||||
|
||||
// Fatal 记录致命错误日志
|
||||
func (l *Logger) Fatal(msg string, fields ...zap.Field) {
|
||||
l.Logger.Fatal(msg, fields...)
|
||||
}
|
||||
|
||||
// WithField 添加字段
|
||||
func (l *Logger) WithField(key string, value interface{}) *Logger {
|
||||
return &Logger{Logger: l.Logger.With(zap.Any(key, value))}
|
||||
}
|
||||
|
||||
// WithFields 添加多个字段
|
||||
func (l *Logger) WithFields(fields map[string]interface{}) *Logger {
|
||||
zapFields := make([]zap.Field, 0, len(fields))
|
||||
for k, v := range fields {
|
||||
zapFields = append(zapFields, zap.Any(k, v))
|
||||
}
|
||||
return &Logger{Logger: l.Logger.With(zapFields...)}
|
||||
}
|
||||
Reference in New Issue
Block a user