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}