Files
ddc/internal/logging/logging.go
T

34 lines
792 B
Go

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)
}