GAAS GFrame项目web后台
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.

88 lines
2.9 KiB

package logger
import (
"github.com/natefinch/lumberjack"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
"sync"
)
var (
fileLogCore *zap.Logger
fLock sync.Mutex
)
type fileDriver struct {
level int
logger *zap.Logger
}
func NewFileDriver(config file, level int) (driver, error) {
fLock.Lock()
defer fLock.Unlock()
if fileLogCore == nil {
lumberjackLogger := &lumberjack.Logger{
Filename: config.Filename,
MaxSize: config.MaxSize,
MaxAge: config.MaxAge,
MaxBackups: config.MaxBackups,
Compress: config.Compress,
}
writeSync := zapcore.AddSync(lumberjackLogger)
coreEncoder := zap.NewProductionEncoderConfig()
coreEncoder.EncodeLevel = zapcore.CapitalLevelEncoder
encoder := zapcore.NewJSONEncoder(coreEncoder)
core := zapcore.NewCore(encoder, writeSync, zap.DebugLevel)
fileLogCore = zap.New(core)
}
return &fileDriver{level, fileLogCore}, nil
}
func (f *fileDriver) Record(message message) {
if (message.Level == debugLevel || message.Level == DebugLevel) && f.level == debugLevelInt {
f.logger.Debug(message.Content,
zap.String("Extra", message.Extra),
zap.Int("Pid", message.Pid),
zap.String("Module", message.Module),
zap.String("Operator", message.Operator),
zap.String("Caller", message.Caller),
zap.String("Date", message.Date),
zap.String("Time", message.Time))
} else if (message.Level == infoLevel || message.Level == InfoLevel) && f.level <= infoLevelInt {
f.logger.Info(message.Content,
zap.String("Extra", message.Extra),
zap.Int("Pid", message.Pid),
zap.String("Module", message.Module),
zap.String("Operator", message.Operator),
zap.String("Caller", message.Caller),
zap.String("Date", message.Date),
zap.String("Time", message.Time))
} else if (message.Level == warnLevel || message.Level == WarnLevel) && f.level <= warnLevelInt {
f.logger.Warn(message.Content,
zap.String("Extra", message.Extra),
zap.Int("Pid", message.Pid),
zap.String("Module", message.Module),
zap.String("Operator", message.Operator),
zap.String("Caller", message.Caller),
zap.String("Date", message.Date),
zap.String("Time", message.Time))
} else if (message.Level == errorLevel || message.Level == ErrorLevel) && f.level <= errorLevelInt {
f.logger.Error(message.Content,
zap.String("Extra", message.Extra),
zap.Int("Pid", message.Pid),
zap.String("Module", message.Module),
zap.String("Operator", message.Operator),
zap.String("Caller", message.Caller),
zap.String("Date", message.Date),
zap.String("Time", message.Time))
} else if (message.Level == fatalLevel || message.Level == FatalLevel) && f.level <= fatalLevelInt {
f.logger.Fatal(message.Content,
zap.String("Extra", message.Extra),
zap.Int("Pid", message.Pid),
zap.String("Module", message.Module),
zap.String("Operator", message.Operator),
zap.String("Caller", message.Caller),
zap.String("Date", message.Date),
zap.String("Time", message.Time))
}
}