You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
1.9 KiB
74 lines
1.9 KiB
package core |
|
|
|
import ( |
|
"go.uber.org/zap" |
|
"go.uber.org/zap/zapcore" |
|
"os" |
|
"time" |
|
) |
|
|
|
type Logger struct { |
|
zap *zap.SugaredLogger |
|
loki lokiClient |
|
} |
|
|
|
// 初始化Zap日志工具 |
|
func initZapLogger() *zap.SugaredLogger { |
|
// 配置 sugaredLogger |
|
writer := zapcore.AddSync(os.Stdout) |
|
|
|
// 自定义时间输出格式 |
|
customTimeEncoder := func(t time.Time, enc zapcore.PrimitiveArrayEncoder) { |
|
enc.AppendString("[" + t.Format("2006-01-02 15:04:05.000") + "]") |
|
} |
|
|
|
// 格式相关的配置 |
|
encoderConfig := zap.NewProductionEncoderConfig() |
|
// 修改时间戳的格式 |
|
encoderConfig.EncodeTime = customTimeEncoder |
|
// 日志级别使用大写带颜色显示 |
|
encoderConfig.EncodeLevel = zapcore.CapitalColorLevelEncoder |
|
encoder := zapcore.NewConsoleEncoder(encoderConfig) |
|
// 将日志级别设置为 DEBUG |
|
core := zapcore.NewCore(encoder, writer, zapcore.DebugLevel) |
|
// 增加 caller 信息 |
|
logger := zap.New(core, zap.AddCaller()) |
|
return logger.Sugar() |
|
} |
|
|
|
// InitLogger 初始化日志系统 |
|
func InitLogger() { |
|
zapLogger := initZapLogger() |
|
loki := initLokiClient() |
|
Log = Logger{zap: zapLogger, loki: loki} |
|
} |
|
|
|
// Debug Debug级别日志 |
|
func (l Logger) Debug(template string, args ...interface{}) { |
|
l.zap.Debugf(template, args...) |
|
l.loki.Debug("", template, args...) |
|
} |
|
|
|
// Info Info级别日志 |
|
func (l Logger) Info(template string, args ...interface{}) { |
|
l.zap.Infof(template, args...) |
|
l.loki.Info("", template, args...) |
|
} |
|
|
|
// Warn Warn级别日志 |
|
func (l Logger) Warn(template string, args ...interface{}) { |
|
l.zap.Warnf(template, args...) |
|
l.loki.Warn("", template, args...) |
|
} |
|
|
|
// Error Error级别日志 |
|
func (l Logger) Error(template string, args ...interface{}) { |
|
l.zap.Errorf(template, args...) |
|
l.loki.Error("", template, args...) |
|
} |
|
|
|
// Panic 打印异常并退出系统 |
|
func (l Logger) Panic(template string, args ...interface{}) { |
|
l.loki.Error("", template, args...) |
|
l.zap.Panicf(template, args...) |
|
}
|
|
|