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

logger.*Logger.CreateSlogHandler   A

Complexity

Conditions 1

Size

Total Lines 17
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
dl 0
loc 17
rs 9.85
c 0
b 0
f 0
nop 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A logger.*Logger.GetLogLevel 0 2 1
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