|
package logger
|
|
|
|
import (
|
|
"go.uber.org/zap"
|
|
"go.uber.org/zap/zapcore"
|
|
"os"
|
|
"sync"
|
|
)
|
|
|
|
var cLock sync.Mutex
|
|
var consoleLogCore *zap.Logger
|
|
|
|
type consoleLogger struct {
|
|
logger *zap.Logger
|
|
}
|
|
|
|
func NewConsoleDriver(config console) (driver, error) {
|
|
cLock.Lock()
|
|
defer cLock.Unlock()
|
|
if consoleLogCore == nil {
|
|
coreEncoder := zap.NewProductionEncoderConfig()
|
|
coreEncoder.EncodeLevel = zapcore.CapitalLevelEncoder
|
|
encoder := zapcore.NewJSONEncoder(coreEncoder)
|
|
core := zapcore.NewCore(encoder, zapcore.Lock(os.Stdout), zap.DebugLevel)
|
|
consoleLogCore = zap.New(core)
|
|
}
|
|
|
|
return &consoleLogger{consoleLogCore}, nil
|
|
}
|
|
|
|
func (c *consoleLogger) Record(message message) {
|
|
if message.Level == debugLevel || message.Level == DebugLevel {
|
|
c.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 {
|
|
c.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 {
|
|
c.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 {
|
|
c.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 {
|
|
c.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))
|
|
}
|
|
}
|