Passed
Pull Request — main (#166)
by Yume
02:23
created

logger.GetLogger   A

Complexity

Conditions 2

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
package logger
2
3
import (
4
	"log/slog"
5
	"os"
6
	"sync"
7
)
8
9
var (
10
	logger *Logger   //nolint:gochecknoglobals //Singleton
11
	once   sync.Once //nolint:gochecknoglobals //Singleton
12
)
13
14
type Logger struct {
15
	logLevel slog.Level
16
}
17
18
func GetLogger() *Logger {
19
	once.Do(func() {
20
		logger = &Logger{
21
			logLevel: slog.LevelInfo,
22
		}
23
	})
24
	return logger
25
}
26
27
func (l *Logger) SetLogLevel(level slog.Level) *Logger {
28
	l.logLevel = level
29
	return l
30
}
31
32
func (l *Logger) GetLogLevel() slog.Level {
33
	return l.logLevel
34
}
35
36
func (l *Logger) CreateGlobalHandler() {
37
	handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
38
		Level:     l.logLevel,
39
		AddSource: false,
40
	})
41
42
	logger := slog.New(handler)
43
44
	slog.SetLogLoggerLevel(l.logLevel)
45
46
	slog.SetDefault(logger)
47
}
48