this repo has no description
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}