Merge branch 'develop' of git.ailuowan.com:zzw/lone-services into develop
CI / changes (push) Successful in 13s
CI / docker-bff (push) Successful in 3m18s
CI / docker-product (push) Successful in 3m37s
CI / docker-admin (push) Successful in 3m37s
CI / docker-user (push) Successful in 3m33s
CI / docker-ad (push) Successful in 3m34s

This commit is contained in:
2026-08-24 10:06:59 +08:00
34 changed files with 454 additions and 300 deletions
-137
View File
@@ -1,137 +0,0 @@
package log
import (
"fmt"
"os"
"time"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
)
var sugar *zap.SugaredLogger
type Config struct {
Path string
InfoFile string
ErrorFile string
FatalFile string
MaxSize int
MaxBackups int
MaxAge int
}
func Init(c Config) error {
l, err := New(c)
if err != nil {
return err
}
sugar = l
return nil
}
func Info(args ...any) { sugar.Info(args...) }
func Infof(template string, args ...any) { sugar.Infof(template, args...) }
func Warn(args ...any) { sugar.Warn(args...) }
func Warnf(template string, args ...any) { sugar.Warnf(template, args...) }
func Error(args ...any) { sugar.Error(args...) }
func Errorf(template string, args ...any) { sugar.Errorf(template, args...) }
func Fatal(args ...any) { sugar.Fatal(args...) }
func Fatalf(template string, args ...any) { sugar.Fatalf(template, args...) }
func New(c Config) (*zap.SugaredLogger, error) {
if c.Path == "" {
c.Path = "logs"
}
if c.InfoFile == "" {
c.InfoFile = "info.log"
}
if c.ErrorFile == "" {
c.ErrorFile = "error.log"
}
if c.FatalFile == "" {
c.FatalFile = "fatal.log"
}
if c.MaxSize == 0 {
c.MaxSize = 100
}
if c.MaxBackups == 0 {
c.MaxBackups = 10
}
if c.MaxAge == 0 {
c.MaxAge = 30
}
if err := os.MkdirAll(c.Path, 0o755); err != nil {
return nil, fmt.Errorf("log mkdir: %w", err)
}
consoleEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
MessageKey: "msg",
LevelKey: "level",
EncodeLevel: zapcore.LowercaseColorLevelEncoder,
TimeKey: "ts",
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendString(t.Format("2006-01-02 15:04:05"))
},
CallerKey: "file",
EncodeCaller: zapcore.ShortCallerEncoder,
EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendInt64(int64(d) / 1e6)
},
})
fileEncoder := zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
MessageKey: "msg",
LevelKey: "level",
EncodeLevel: zapcore.LowercaseLevelEncoder,
TimeKey: "ts",
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendString(t.Format("2006-01-02 15:04:05"))
},
CallerKey: "file",
EncodeCaller: zapcore.ShortCallerEncoder,
EncodeDuration: func(d time.Duration, enc zapcore.PrimitiveArrayEncoder) {
enc.AppendInt64(int64(d) / 1e6)
},
})
infoLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl == zapcore.InfoLevel
})
errorLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl == zapcore.ErrorLevel
})
fatalLevel := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl == zapcore.FatalLevel
})
today := time.Now().Format("2006-01-02")
infoWriter := getWriter(c.Path+"/"+today+"-"+c.InfoFile, c)
errorWriter := getWriter(c.Path+"/"+today+"-"+c.ErrorFile, c)
fatalWriter := getWriter(c.Path+"/"+today+"-"+c.FatalFile, c)
core := zapcore.NewTee(
zapcore.NewCore(consoleEncoder, zapcore.AddSync(os.Stdout), zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
return lvl >= zapcore.InfoLevel
})),
zapcore.NewCore(fileEncoder, infoWriter, infoLevel),
zapcore.NewCore(fileEncoder, errorWriter, errorLevel),
zapcore.NewCore(fileEncoder, fatalWriter, fatalLevel),
)
// AddCallerSkip(1):经包级 Info/Errorf 转发时显示真实调用方
return zap.New(core, zap.AddCaller(), zap.AddCallerSkip(1)).Sugar(), nil
}
func getWriter(filename string, c Config) zapcore.WriteSyncer {
return zapcore.AddSync(&lumberjack.Logger{
Filename: filename,
MaxSize: c.MaxSize,
MaxBackups: c.MaxBackups,
MaxAge: c.MaxAge,
Compress: false,
LocalTime: true,
})
}