a love letter to tangled (android, iOS, and a search API)
at main 33 lines 703 B view raw
1package observability 2 3import ( 4 "log/slog" 5 "os" 6 7 charmlog "github.com/charmbracelet/log" 8 "tangled.org/desertthunder.dev/twister/internal/config" 9) 10 11func NewLogger(cfg *config.Config) *slog.Logger { 12 level := charmlog.InfoLevel 13 switch cfg.LogLevel { 14 case "debug": 15 level = charmlog.DebugLevel 16 case "warn": 17 level = charmlog.WarnLevel 18 case "error": 19 level = charmlog.ErrorLevel 20 } 21 22 var handler slog.Handler 23 if cfg.LogFormat == "json" { 24 handler = slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.Level(level)}) 25 } else { 26 handler = charmlog.NewWithOptions(os.Stdout, charmlog.Options{ 27 Level: level, 28 ReportTimestamp: true, 29 }) 30 } 31 32 return slog.New(handler) 33}