Add structured logging and better error handling

This commit is contained in:
SirBlob committed 2026-11-01 13:50:26 -05:00
1 parent db4e3c9611
commit 68c7dd76f2
31 files changed
+640 -109

No files matched your search

+33
View File
@@ -0,0 +1,33 @@
package logging
import (
"fmt"
"log/slog"
"os"
"strings"
)
func Setup(level, format string) error {
var parsedLevel slog.Level
if err := parsedLevel.UnmarshalText([]byte(level)); err != nil {
return fmt.Errorf("LOG_LEVEL must be debug, info, warn or error: %w", err)
}
options := &slog.HandlerOptions{Level: parsedLevel}
var handler slog.Handler
switch strings.ToLower(format) {
case "text":
handler = slog.NewTextHandler(os.Stdout, options)
case "json":
handler = slog.NewJSONHandler(os.Stdout, options)
default:
return fmt.Errorf("LOG_FORMAT must be text or json, got %q", format)
}
slog.SetDefault(slog.New(handler))
return nil
}
func Fatal(message string, err error, attributes ...any) {
slog.Error(message, append(attributes, "error", err)...)
os.Exit(1)
}