a love letter to tangled (android, iOS, and a search API)
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}