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

pkg/logger/slog.go   A

Size/Duplication

Total Lines 46
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 26
dl 0
loc 46
rs 10
c 0
b 0
f 0

4 Methods

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