Passed
Push — main ( 7e619e...36c76a )
by Yume
01:54
created

pkg/logger/slog.go   A

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 4
eloc 25
dl 0
loc 43
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A logger.*Logger.SetLogLevel 0 2 1
A logger.NewLogger 0 3 1
A logger.*Logger.GetLogLevel 0 2 1
A logger.*Logger.CreateSlogHandler 0 17 1
1
package logger
2
3
import (
4
	"log/slog"
5
	"os"
6
	"runtime/debug"
7
)
8
9
type Logger struct {
10
	logLevel slog.Level
11
}
12
13
func NewLogger() *Logger {
14
	return &Logger{
15
		logLevel: slog.LevelInfo,
16
	}
17
}
18
19
func (l *Logger) SetLogLevel(level slog.Level) {
20
	l.logLevel = level
21
}
22
23
func (l *Logger) GetLogLevel() slog.Level {
24
	return l.logLevel
25
}
26
27
func (l *Logger) CreateSlogHandler() {
28
	handler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
29
		Level:     l.logLevel,
30
		AddSource: l.logLevel == slog.LevelDebug,
31
	})
32
33
	buildInfo, _ := debug.ReadBuildInfo()
34
35
	logger := slog.New(handler)
36
37
	child := logger.With(
38
		slog.Group("program_info",
39
			slog.Int("pid", os.Getpid()),
40
			slog.String("go_version", buildInfo.GoVersion),
41
		))
42
43
	slog.SetDefault(child)
44
}
45