this repo has no description
at main 52 lines 839 B view raw
1package logging 2 3import ( 4 "log/slog" 5 "os" 6 "strings" 7 "sync" 8) 9 10type Logger = *slog.Logger 11 12var ( 13 once sync.Once 14 logger *slog.Logger 15 logLevel = &slog.LevelVar{} 16) 17 18func Get() Logger { 19 Init() 20 return logger 21} 22 23func InitTextLogger() { 24 once.Do(func() { 25 logLevel.Set(slog.LevelInfo) 26 h := NewCliHandler(os.Stdout, logLevel) 27 logger = slog.New(h) 28 }) 29} 30 31func Init() { 32 once.Do(func() { 33 logLevel.Set(slog.LevelInfo) 34 h := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelError}) 35 logger = slog.New(h) 36 }) 37} 38 39func SetLevel(s string) { 40 switch strings.ToLower(s) { 41 case "debug": 42 logLevel.Set(slog.LevelDebug) 43 case "info": 44 logLevel.Set(slog.LevelInfo) 45 case "warn", "warning": 46 logLevel.Set(slog.LevelWarn) 47 case "error": 48 logLevel.Set(slog.LevelError) 49 default: 50 logLevel.Set(slog.LevelInfo) 51 } 52}