1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- package logger
- import (
- "io"
- "log/slog"
- "os"
- "strings"
- )
- import (
- "gopkg.in/natefinch/lumberjack.v2"
- )
- import (
- "protocol-server/common"
- )
- var lumberJackLogger *lumberjack.Logger
- var logger *slog.Logger
- func SetupLogger(persisted bool) {
- //设置日志级别
- var level = new(slog.LevelVar)
- switch common.LoggerConfig.LogLevel {
- case "DEBUG":
- level.Set(slog.LevelDebug)
- case "INFO":
- level.Set(slog.LevelInfo)
- case "WARN":
- level.Set(slog.LevelWarn)
- case "ERROR":
- level.Set(slog.LevelError)
- default:
- level.Set(slog.LevelInfo)
- }
- opts := &slog.HandlerOptions{
- Level: level,
- AddSource: true,
- }
- filename := common.LoggerConfig.LogDir + "/protocol.log"
- if strings.HasSuffix(common.LoggerConfig.LogDir, "/") {
- filename = common.LoggerConfig.LogDir + "protocol.log"
- }
- lumberJackLogger = &lumberjack.Logger{
- Filename: filename, //日志文件的位置
- MaxSize: common.LoggerConfig.MaxSize, //在进行切割之前,日志文件的最大大小(以MB为单位)
- MaxBackups: common.LoggerConfig.MaxBackups, //最多保留文件个数
- MaxAge: common.LoggerConfig.MaxAge, //保留旧文件的最大天数
- Compress: common.LoggerConfig.Compress, //是否压缩/归档旧文件
- LocalTime: true,
- }
- if persisted {
- if common.LoggerConfig.Stdout {
- logger = slog.New(slog.NewTextHandler(io.MultiWriter(lumberJackLogger, os.Stdout), opts))
- } else {
- logger = slog.New(slog.NewTextHandler(lumberJackLogger, opts))
- }
- } else {
- logger = slog.New(slog.NewTextHandler(os.Stdout, opts))
- }
- slog.SetDefault(logger)
- //todo 输出到robot
- slog.Info("setup logger ok",
- "level", level.String(),
- "filename", filename,
- "max size", common.LoggerConfig.MaxSize,
- "max backups", common.LoggerConfig.MaxBackups,
- "max age", common.LoggerConfig.MaxAge,
- "compress", common.LoggerConfig.Compress,
- )
- }
- func ShutdownLogger() {
- lumberJackLogger.Rotate()
- }
- func WithGroup(name string) *slog.Logger {
- return logger.WithGroup(name)
- }
- func With(args ...any) *slog.Logger {
- return logger.With(args)
- }
|