cli + tui to publish to leaflet (wip) & manage tasks, notes & watch/read lists 馃崈
charm
leaflet
readability
golang
1package utils
2
3import (
4 "os"
5 "strings"
6
7 "github.com/charmbracelet/log"
8)
9
10// Logger is the global application logger
11var Logger *log.Logger
12
13// NewLogger creates a new logger with the specified level and format
14func NewLogger(level string, format string) *log.Logger {
15 logger := log.New(os.Stderr)
16
17 switch strings.ToLower(level) {
18 case "debug":
19 logger.SetLevel(log.DebugLevel)
20 case "info":
21 logger.SetLevel(log.InfoLevel)
22 case "warn", "warning":
23 logger.SetLevel(log.WarnLevel)
24 case "error":
25 logger.SetLevel(log.ErrorLevel)
26 default:
27 logger.SetLevel(log.InfoLevel)
28 }
29
30 // Set format
31 if format == "json" {
32 logger.SetFormatter(log.JSONFormatter)
33 } else {
34 logger.SetFormatter(log.TextFormatter)
35 logger.SetReportTimestamp(true)
36 }
37
38 return logger
39}
40
41// GetLogger returns the global logger, creating a default one if it doesn't exist
42func GetLogger() *log.Logger {
43 if Logger == nil {
44 Logger = NewLogger("info", "text")
45 }
46 return Logger
47}