|
|
@ -1,6 +1,8 @@ |
|
|
|
package logger |
|
|
|
|
|
|
|
import ( |
|
|
|
"strconv" |
|
|
|
|
|
|
|
//"github.com/natefinch/lumberjack"
|
|
|
|
rotatelogs "github.com/lestrrat-go/file-rotatelogs" |
|
|
|
"go.uber.org/zap" |
|
|
@ -9,7 +11,7 @@ import ( |
|
|
|
) |
|
|
|
|
|
|
|
var ( |
|
|
|
fileLogCore *zap.Logger |
|
|
|
fileLogCoreMap map[string]*zap.Logger |
|
|
|
) |
|
|
|
|
|
|
|
type fileDriver struct { |
|
|
@ -18,7 +20,15 @@ type fileDriver struct { |
|
|
|
} |
|
|
|
|
|
|
|
func NewFileDriver(config file, level int) (driver, error) { |
|
|
|
if fileLogCore == nil { |
|
|
|
var logCore *zap.Logger |
|
|
|
if fileLogCoreMap == nil { |
|
|
|
fileLogCoreMap = make(map[string]*zap.Logger) |
|
|
|
} |
|
|
|
|
|
|
|
mKey := config.Filename+strconv.Itoa(config.MaxAge) |
|
|
|
logCore = fileLogCoreMap[mKey] |
|
|
|
if logCore == nil { |
|
|
|
|
|
|
|
//lumberjackLogger := &lumberjack.Logger{
|
|
|
|
// Filename: config.Filename,
|
|
|
|
// MaxSize: config.MaxSize,
|
|
|
@ -26,7 +36,7 @@ func NewFileDriver(config file, level int) (driver, error) { |
|
|
|
// MaxBackups: config.MaxBackups,
|
|
|
|
// Compress: config.Compress,
|
|
|
|
//}
|
|
|
|
age := time.Hour*24*time.Duration(config.MaxAge) |
|
|
|
age := time.Hour * 24 * time.Duration(config.MaxAge) |
|
|
|
hook, err := rotatelogs.New( |
|
|
|
config.Filename+".%Y%m%d", |
|
|
|
rotatelogs.WithLinkName(config.Filename), |
|
|
@ -42,9 +52,10 @@ func NewFileDriver(config file, level int) (driver, error) { |
|
|
|
coreEncoder.EncodeLevel = zapcore.CapitalLevelEncoder |
|
|
|
encoder := zapcore.NewJSONEncoder(coreEncoder) |
|
|
|
core := zapcore.NewCore(encoder, writeSync, zap.DebugLevel) |
|
|
|
fileLogCore = zap.New(core) |
|
|
|
logCore = zap.New(core) |
|
|
|
fileLogCoreMap[mKey] = logCore |
|
|
|
} |
|
|
|
return &fileDriver{level, fileLogCore}, nil |
|
|
|
return &fileDriver{level, logCore}, nil |
|
|
|
} |
|
|
|
|
|
|
|
func (f *fileDriver) Record(message message) { |
|
|
|