package log import ( "io" "log/slog" "os" "path" "path/filepath" "slgserver/config" "strings" "gopkg.in/natefinch/lumberjack.v2" ) func init() { fileDir := config.GetString("log.file_dir", "../log/") maxSize := config.GetInt("log.max_size", 128) maxBackups := config.GetInt("log.max_backups", 30) maxAge := config.GetInt("log.max_age", 7) compress := config.GetBool("log.compress", true) sa := strings.Split(filepath.Base(os.Args[0]), ".") fileName := sa[0] + ".log" hook := &lumberjack.Logger{ Filename: path.Join(fileDir, fileName), // 日志文件路径 MaxSize: maxSize, // 每个日志文件保存的最大尺寸 单位:M MaxBackups: maxBackups, // 日志文件最多保存多少个备份 MaxAge: maxAge, // 文件最多保存多少天 Compress: compress, // 是否压缩 } // 创建多写入器:同时写入标准输出和文件 multiWriter := io.MultiWriter(os.Stdout, hook) // 创建 JSON handler,包含调用者信息 opts := &slog.HandlerOptions{ Level: slog.LevelInfo, AddSource: true, // 添加调用者信息 } handler := slog.NewJSONHandler(multiWriter, opts) logger := slog.New(handler) // 使用 slog 标准方式设置默认 logger slog.SetDefault(logger) }