58 lines
1.3 KiB
Go
58 lines
1.3 KiB
Go
|
|
package logger
|
||
|
|
|
||
|
|
import (
|
||
|
|
"os"
|
||
|
|
|
||
|
|
"github.com/natefinch/lumberjack"
|
||
|
|
"go.uber.org/zap"
|
||
|
|
"go.uber.org/zap/zapcore"
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
log_inst = NewLogger()
|
||
|
|
log_file_config = zapcore.AddSync(&lumberjack.Logger{
|
||
|
|
Filename: "services/logger/serverlog.log",
|
||
|
|
MaxSize: 500, // megabytes
|
||
|
|
MaxBackups: 3,
|
||
|
|
MaxAge: 28, //days
|
||
|
|
})
|
||
|
|
json_enc = zapcore.NewJSONEncoder(zapcore.EncoderConfig{
|
||
|
|
TimeKey: "timestamp",
|
||
|
|
LevelKey: "level",
|
||
|
|
NameKey: "logger",
|
||
|
|
EncodeLevel: zapcore.LowercaseLevelEncoder,
|
||
|
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
||
|
|
})
|
||
|
|
console_enc = zapcore.NewConsoleEncoder(zapcore.EncoderConfig{
|
||
|
|
TimeKey: "timestamp",
|
||
|
|
LevelKey: "level",
|
||
|
|
NameKey: "logger",
|
||
|
|
CallerKey: "caller",
|
||
|
|
MessageKey: "message",
|
||
|
|
StacktraceKey: "error",
|
||
|
|
EncodeLevel: zapcore.CapitalColorLevelEncoder,
|
||
|
|
EncodeTime: zapcore.ISO8601TimeEncoder,
|
||
|
|
})
|
||
|
|
)
|
||
|
|
|
||
|
|
func createLogggerConfig() *zap.Logger {
|
||
|
|
log_level := zap.NewAtomicLevelAt(zap.InfoLevel)
|
||
|
|
|
||
|
|
log_core := zapcore.NewTee(
|
||
|
|
zapcore.NewCore(json_enc, log_file_config, log_level),
|
||
|
|
zapcore.NewCore(console_enc, zapcore.AddSync(os.Stdout), log_level),
|
||
|
|
)
|
||
|
|
|
||
|
|
return zap.New(log_core)
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewLogger() *zap.Logger {
|
||
|
|
log := createLogggerConfig()
|
||
|
|
defer log.Sync()
|
||
|
|
return log
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetInstance() *zap.Logger {
|
||
|
|
return log_inst
|
||
|
|
}
|