@@ -18,7 +18,6 @@ package logs
18
18
19
19
import (
20
20
"fmt"
21
- "sync"
22
21
23
22
"github.com/go-logr/logr"
24
23
json "k8s.io/component-base/logs/json"
@@ -33,21 +32,22 @@ var logRegistry = NewLogFormatRegistry()
33
32
// LogFormatRegistry store klog format registry
34
33
type LogFormatRegistry struct {
35
34
registry map [string ]logr.Logger
36
- mu sync. Mutex
35
+ frozen bool
37
36
}
38
37
39
38
// NewLogFormatRegistry return new init LogFormatRegistry struct
40
39
func NewLogFormatRegistry () * LogFormatRegistry {
41
40
return & LogFormatRegistry {
42
41
registry : make (map [string ]logr.Logger ),
43
- mu : sync. Mutex {} ,
42
+ frozen : false ,
44
43
}
45
44
}
46
45
47
46
// Register new log format registry to global logRegistry
48
47
func (lfr * LogFormatRegistry ) Register (name string , logger logr.Logger ) error {
49
- lfr .mu .Lock ()
50
- defer lfr .mu .Unlock ()
48
+ if lfr .frozen {
49
+ return fmt .Errorf ("log format is frozen, unable to register log format" )
50
+ }
51
51
if _ , ok := lfr .registry [name ]; ok {
52
52
return fmt .Errorf ("log format: %s already exists" , name )
53
53
}
@@ -57,8 +57,6 @@ func (lfr *LogFormatRegistry) Register(name string, logger logr.Logger) error {
57
57
58
58
// Get specified log format logger
59
59
func (lfr * LogFormatRegistry ) Get (name string ) (logr.Logger , error ) {
60
- lfr .mu .Lock ()
61
- defer lfr .mu .Unlock ()
62
60
re , ok := lfr .registry [name ]
63
61
if ! ok {
64
62
return nil , fmt .Errorf ("log format: %s does not exists" , name )
@@ -67,30 +65,38 @@ func (lfr *LogFormatRegistry) Get(name string) (logr.Logger, error) {
67
65
}
68
66
69
67
// Set specified log format logger
70
- func (lfr * LogFormatRegistry ) Set (name string , logger logr.Logger ) {
71
- lfr .mu .Lock ()
72
- defer lfr .mu .Unlock ()
68
+ func (lfr * LogFormatRegistry ) Set (name string , logger logr.Logger ) error {
69
+ if lfr .frozen {
70
+ return fmt .Errorf ("log format is frozen, unable to set log format" )
71
+ }
72
+
73
73
lfr .registry [name ] = logger
74
+ return nil
74
75
}
75
76
76
77
// Delete specified log format logger
77
- func (lfr * LogFormatRegistry ) Delete (name string ) {
78
- lfr .mu .Lock ()
79
- defer lfr .mu .Unlock ()
78
+ func (lfr * LogFormatRegistry ) Delete (name string ) error {
79
+ if lfr .frozen {
80
+ return fmt .Errorf ("log format is frozen, unable to delete log format" )
81
+ }
82
+
80
83
delete (lfr .registry , name )
84
+ return nil
81
85
}
82
86
83
87
// List names of registered log formats
84
88
func (lfr * LogFormatRegistry ) List () []string {
85
- lfr .mu .Lock ()
86
- defer lfr .mu .Unlock ()
87
89
formats := make ([]string , 0 , len (lfr .registry ))
88
90
for f := range lfr .registry {
89
91
formats = append (formats , f )
90
92
}
91
93
return formats
92
94
}
93
95
96
+ // Freeze freezes the log format registry
97
+ func (lfr * LogFormatRegistry ) Freeze () {
98
+ lfr .frozen = true
99
+ }
94
100
func init () {
95
101
// Text format is default klog format
96
102
logRegistry .Register (defaultLogFormat , nil )
0 commit comments