115 lines
2.3 KiB
Go
115 lines
2.3 KiB
Go
package logger
|
|
|
|
import (
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
)
|
|
|
|
// Logger 全局日志实例
|
|
var Logger *zap.Logger
|
|
|
|
// InitializeLogger 初始化日志系统
|
|
func InitializeLogger(env string) error {
|
|
var config zap.Config
|
|
|
|
switch env {
|
|
case "development":
|
|
config = zap.NewDevelopmentConfig()
|
|
config.EncoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder
|
|
case "production":
|
|
config = zap.NewProductionConfig()
|
|
config.Encoding = "json"
|
|
config.EncoderConfig.TimeKey = "timestamp"
|
|
config.EncoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
|
default:
|
|
config = zap.NewDevelopmentConfig()
|
|
}
|
|
|
|
config.OutputPaths = []string{"stdout"}
|
|
config.ErrorOutputPaths = []string{"stderr"}
|
|
|
|
var err error
|
|
Logger, err = config.Build()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
zap.ReplaceGlobals(Logger)
|
|
|
|
return nil
|
|
}
|
|
|
|
// Sync 同步日志到磁盘
|
|
func Sync() {
|
|
if err := Logger.Sync(); err != nil {
|
|
Logger.Error("Failed to sync logger", zap.Error(err))
|
|
}
|
|
}
|
|
|
|
// Info 记录信息级别的日志
|
|
func Info(msg string, fields ...zap.Field) {
|
|
Logger.Info(msg, fields...)
|
|
}
|
|
|
|
// Warn 记录警告级别的日志
|
|
func Warn(msg string, fields ...zap.Field) {
|
|
Logger.Warn(msg, fields...)
|
|
}
|
|
|
|
// Error 记录错误级别的日志
|
|
func Error(msg string, fields ...zap.Field) {
|
|
Logger.Error(msg, fields...)
|
|
}
|
|
|
|
// Fatal 记录致命级别的日志
|
|
func Fatal(msg string, fields ...zap.Field) {
|
|
Logger.Fatal(msg, fields...)
|
|
}
|
|
|
|
// Debug 记录调试级别的日志
|
|
func Debug(msg string, fields ...zap.Field) {
|
|
Logger.Debug(msg, fields...)
|
|
}
|
|
|
|
// String 字符串字段
|
|
func String(key, value string) zap.Field {
|
|
return zap.String(key, value)
|
|
}
|
|
|
|
// Int 整数字段
|
|
func Int(key string, value int) zap.Field {
|
|
return zap.Int(key, value)
|
|
}
|
|
|
|
// Int64 64位整数字段
|
|
func Int64(key string, value int64) zap.Field {
|
|
return zap.Int64(key, value)
|
|
}
|
|
|
|
// Bool 布尔字段
|
|
func Bool(key string, value bool) zap.Field {
|
|
return zap.Bool(key, value)
|
|
}
|
|
|
|
// Float64 浮点数字段
|
|
func Float64(key string, value float64) zap.Field {
|
|
return zap.Float64(key, value)
|
|
}
|
|
|
|
// Err 错误字段
|
|
func Err(err error) zap.Field {
|
|
return zap.Error(err)
|
|
}
|
|
|
|
// Time 时间字段
|
|
func Time(key string, value time.Time) zap.Field {
|
|
return zap.Time(key, value)
|
|
}
|
|
|
|
// Duration 时间间隔字段
|
|
func Duration(key string, value time.Duration) zap.Field {
|
|
return zap.Duration(key, value)
|
|
}
|