package main import ( "log/slog" "os" "path/filepath" "strings" ) func setupDefaultLogger() { if strings.ToLower(os.Getenv("PROD")) == "true" { options := &slog.HandlerOptions{ Level: slog.LevelInfo, } customLogger := slog.New(slog.NewTextHandler(os.Stdout, options)) slog.SetDefault(customLogger) slog.Info("Production logger initialized", slog.Group("app", "version", Version, "build_time", BuildTime)) return } sourceFileName := func(groups []string, a slog.Attr) slog.Attr { // Remove the directory and function from the source's filename. if a.Key == slog.SourceKey { source := a.Value.Any().(*slog.Source) source.File = filepath.Base(source.File) source.Function = "" } return a } options := &slog.HandlerOptions{ Level: slog.LevelDebug, AddSource: true, ReplaceAttr: sourceFileName, } customLogger := slog.New(slog.NewTextHandler(os.Stdout, options)) slog.SetDefault(customLogger) slog.Info("Development logger initialized", slog.Group("app", "version", Version, "build_time", BuildTime)) }