69 lines
1.9 KiB
Go
69 lines
1.9 KiB
Go
|
package log
|
||
|
|
||
|
import (
|
||
|
"os"
|
||
|
"pcgamedb/config"
|
||
|
"strings"
|
||
|
|
||
|
"go.uber.org/zap"
|
||
|
"go.uber.org/zap/zapcore"
|
||
|
"gopkg.in/natefinch/lumberjack.v2"
|
||
|
)
|
||
|
|
||
|
var Logger *zap.Logger
|
||
|
var ConsoleLogger *zap.Logger
|
||
|
var FileLogger *zap.Logger
|
||
|
var TaskLogger *zap.Logger
|
||
|
|
||
|
func init() {
|
||
|
fileCore, consoleCore, combinedCore, taskCore := buildZapCore(getZapLogLevel(config.Config.LogLevel))
|
||
|
FileLogger = zap.New(fileCore, zap.AddCaller())
|
||
|
ConsoleLogger = zap.New(consoleCore, zap.AddCaller())
|
||
|
Logger = zap.New(combinedCore, zap.AddCaller())
|
||
|
TaskLogger = zap.New(taskCore, zap.AddCaller())
|
||
|
}
|
||
|
|
||
|
func buildZapCore(logLevel zapcore.Level) (fileCore zapcore.Core, consoleCore zapcore.Core, combinedCore zapcore.Core, taskCore zapcore.Core) {
|
||
|
fileWriter := zapcore.AddSync(&lumberjack.Logger{
|
||
|
Filename: "logs/app.log",
|
||
|
MaxSize: 500,
|
||
|
MaxBackups: 3,
|
||
|
MaxAge: 28,
|
||
|
Compress: true,
|
||
|
})
|
||
|
taskFileWriter := zapcore.AddSync(&lumberjack.Logger{
|
||
|
Filename: "logs/task.log",
|
||
|
MaxSize: 500,
|
||
|
MaxBackups: 3,
|
||
|
MaxAge: 28,
|
||
|
Compress: true,
|
||
|
})
|
||
|
consoleWriter := zapcore.AddSync(os.Stdout)
|
||
|
|
||
|
encoderConfig := zap.NewProductionEncoderConfig()
|
||
|
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
|
||
|
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
|
||
|
encoderConfig.EncodeCaller = zapcore.ShortCallerEncoder
|
||
|
|
||
|
fileCore = zapcore.NewCore(zapcore.NewConsoleEncoder(encoderConfig), fileWriter, logLevel)
|
||
|
consoleCore = zapcore.NewCore(zapcore.NewConsoleEncoder(encoderConfig), consoleWriter, logLevel)
|
||
|
combinedCore = zapcore.NewTee(fileCore, consoleCore)
|
||
|
taskCore = zapcore.NewCore(zapcore.NewConsoleEncoder(encoderConfig), taskFileWriter, logLevel)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func getZapLogLevel(logLevel string) zapcore.Level {
|
||
|
switch strings.ToLower(logLevel) {
|
||
|
case "debug":
|
||
|
return zap.DebugLevel
|
||
|
case "warn":
|
||
|
return zap.WarnLevel
|
||
|
case "error":
|
||
|
return zap.ErrorLevel
|
||
|
case "info":
|
||
|
return zap.InfoLevel
|
||
|
default:
|
||
|
return zap.InfoLevel
|
||
|
}
|
||
|
}
|