level.go

 1package loglevel
 2
 3import (
 4	"log"
 5	"sync/atomic"
 6)
 7
 8type Level int32
 9
10const (
11	LevelSilent Level = iota
12	LevelInfo
13	LevelVerbose
14	LevelDebug
15)
16
17var current atomic.Int32
18
19func init() {
20	current.Store(int32(LevelInfo))
21}
22
23func Set(level Level) {
24	current.Store(int32(level))
25}
26
27func Get() Level {
28	return Level(current.Load())
29}
30
31func Debugf(format string, args ...any) {
32	if Get() >= LevelDebug {
33		log.Printf("debug: "+format, args...)
34	}
35}
36
37func Verbosef(format string, args ...any) {
38	if Get() >= LevelVerbose {
39		log.Printf("verbose: "+format, args...)
40	}
41}
42
43func Infof(format string, args ...any) {
44	if Get() >= LevelInfo {
45		log.Printf("info: "+format, args...)
46	}
47}