2
0
mirror of https://gitee.ltd/lxh/logger.git synced 2025-10-23 14:56:16 +08:00
Files
logger/file.go
2025-10-14 15:29:34 +08:00

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)
}