package log import ( "log/slog" "os" "time" "github.com/lmittmann/tint" "github.com/mattn/go-colorable" ) func Init() { mode := os.Getenv("APP_LOG_MODE") if mode == "" { mode = "dev" } level := slog.LevelInfo switch mode { case "dev": writer := colorable.NewColorable(os.Stdout) logger := slog.New(tint.NewHandler(writer, &tint.Options{ Level: level, TimeFormat: time.RFC3339, ReplaceAttr: func(_ []string, attr slog.Attr) slog.Attr { err, ok := attr.Value.Any().(error) if ok { return tint.Err(err) } return attr }, })) slog.SetDefault(logger) case "test": logger := slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{ Level: level, })) slog.SetDefault(logger) default: panic("日志模式错误") } }