mirror of
https://gitee.ltd/lxh/logger.git
synced 2025-10-23 06:46:15 +08:00
73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package zap_logger
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"time"
|
|
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"gopkg.in/natefinch/lumberjack.v2"
|
|
|
|
customencoder "gitee.ltd/lxh/logger/v2/encoder"
|
|
)
|
|
|
|
type fileLogger struct {
|
|
Filename string
|
|
Encoder string
|
|
Level string
|
|
MaxSize int
|
|
MaxAge int
|
|
MaxBackups int
|
|
LocalTime bool
|
|
Compress bool
|
|
}
|
|
|
|
func newFileLogger(fileConf *File) *fileLogger {
|
|
if fileConf.Filename == "" {
|
|
hostname, _ := os.Hostname()
|
|
fileConf.Filename = fmt.Sprintf("app-%s-%s.log", hostname, time.Now().Format("20060102"))
|
|
}
|
|
return &fileLogger{
|
|
Filename: fileConf.Filename,
|
|
Encoder: fileConf.Encoder,
|
|
Level: fileConf.Level,
|
|
MaxSize: fileConf.MaxSize,
|
|
MaxAge: fileConf.MaxAge,
|
|
MaxBackups: fileConf.MaxBackups,
|
|
LocalTime: fileConf.LocalTime,
|
|
Compress: fileConf.Compress,
|
|
}
|
|
}
|
|
|
|
func (f *fileLogger) Init() zapcore.Core {
|
|
lumberLogger := &lumberjack.Logger{
|
|
Filename: f.Filename,
|
|
MaxSize: f.MaxSize,
|
|
MaxAge: f.MaxAge,
|
|
MaxBackups: f.MaxBackups,
|
|
LocalTime: f.LocalTime,
|
|
Compress: f.Compress,
|
|
}
|
|
|
|
encoderConfig := zap.NewProductionEncoderConfig()
|
|
encoderConfig.TimeKey = "time"
|
|
encoderConfig.EncodeTime = func(time time.Time, encoder zapcore.PrimitiveArrayEncoder) {
|
|
encoder.AppendString(time.Format("2006-01-02 15:04:05.000"))
|
|
}
|
|
|
|
writer := zapcore.AddSync(lumberLogger)
|
|
var encoder zapcore.Encoder
|
|
switch f.Encoder {
|
|
case "json":
|
|
encoder = customencoder.NewJsonEncoder(encoderConfig)
|
|
case "console":
|
|
encoder = zapcore.NewConsoleEncoder(encoderConfig)
|
|
}
|
|
|
|
level, _ := zapcore.ParseLevel(strings.ToLower(f.Level))
|
|
|
|
return zapcore.NewCore(encoder, writer, level)
|
|
}
|