@@ -9,64 +9,16 @@ import (
9
9
)
10
10
11
11
var (
12
- globalLoadedConfig = false
13
- globalLevels = make (map [string ]Level )
14
- globalLoggers = make (map [string ]Logger )
15
12
globalWriters = []Writer {getDefaultWriter ()}
16
- globalLogger = New ("" )
17
13
globalTraceEnabled = false
18
14
)
19
15
20
- // Logger interface exposed to users
21
- type Logger interface {
22
- Err (format string , args ... interface {}) error
23
- Error (format string , args ... interface {})
24
- Warn (format string , args ... interface {})
25
- Info (format string , args ... interface {})
26
- Debug (format string , args ... interface {})
27
- Panic (format string , args ... interface {})
28
- SetLevel (Level )
29
- }
30
-
31
16
// Writer writer interface
32
17
type Writer interface {
33
- WriteLog (name string , logLevel Level , format string , args []interface {})
18
+ WriteLog (logLevel Level , format string , args []interface {})
34
19
SetLevel (level Level )
35
20
}
36
21
37
- // logger instance
38
- type logger struct {
39
- level Level
40
- name string
41
- }
42
-
43
- // New constructor
44
- func New (name string ) Logger {
45
- // level
46
- var lvl Level
47
- if l , ok := globalLevels [name ]; ok {
48
- lvl = l
49
- } else {
50
- lvl = globalLevels ["" ]
51
- }
52
-
53
- l := & logger {lvl , name }
54
- globalLoggers [name ] = l
55
-
56
- if ! globalLoadedConfig {
57
- LoadLogProperties ()
58
- globalLoadedConfig = true
59
- }
60
-
61
- return l
62
- }
63
-
64
- // SetDefaultLevel sets the default logging level. It defaults to WARN
65
- func SetDefaultLevel (l Level ) {
66
- globalLevels ["" ] = l
67
- globalLogger .SetLevel (l )
68
- }
69
-
70
22
// SetTrace when set to true, the log will print file names and line numbers
71
23
func SetTrace (trace bool ) {
72
24
globalTraceEnabled = trace
@@ -77,109 +29,53 @@ func IsTraceEnabled() bool {
77
29
return globalTraceEnabled
78
30
}
79
31
80
- // SetLoggerLevels sets the levels for all existing loggers and future loggers
81
- func SetLoggerLevels (levels map [string ]Level ) {
82
- //
83
- for k , lev := range levels {
84
- if log , ok := globalLoggers [k ]; ok {
85
- log .SetLevel (lev )
86
- }
87
- }
88
-
89
- // make sure there is always a root logger level
90
- if _ , ok := levels ["" ]; ! ok {
91
- levels ["" ] = WARN
92
- }
93
-
94
- //
95
- globalLevels = levels
96
- }
97
-
98
32
// SetWriters sets the writers for all the loggers
99
33
func SetWriters (w []Writer ) {
100
34
globalWriters = w
101
35
}
102
36
103
- // Err logs at error level and returns the error
104
- func (l * logger ) Err (format string , a ... interface {}) error {
105
- PrintLog (l .name , l .level , ERROR , format , a )
106
- return fmt .Errorf (format , a ... )
107
- }
108
-
109
- // Error logs at error level
110
- func (l * logger ) Error (format string , a ... interface {}) {
111
- PrintLog (l .name , l .level , ERROR , format , a )
112
- }
113
-
114
- // Info logs at info level
115
- func (l * logger ) Info (format string , a ... interface {}) {
116
- PrintLog (l .name , l .level , INFO , format , a )
117
- }
118
-
119
- // Warn logs at wanr level
120
- func (l * logger ) Warn (format string , a ... interface {}) {
121
- PrintLog (l .name , l .level , WARN , format , a )
122
- }
123
-
124
- // Debug logs at debug level
125
- func (l * logger ) Debug (format string , a ... interface {}) {
126
- PrintLog (l .name , l .level , DEBUG , format , a )
127
- }
128
-
129
- // Panic error and exit
130
- func (l * logger ) Panic (format string , a ... interface {}) {
131
- PrintLog (l .name , l .level , ERROR , format , a )
132
- panic ("panic!" )
133
- }
134
-
135
- // SetLevel set logger level
136
- func (l * logger ) SetLevel (level Level ) {
137
- l .level = level
138
- }
139
-
140
37
// PrintLog sends a log message to the writers.
141
38
// name: logger name
142
39
// loggerLevel: the level of the logger implementation
143
40
// logLevel: the level of the message. If the level of the message is greater than loggerLevel the log will bi discarted
144
41
// format: log format. See fmt.Printf
145
42
// a...: arguments. See fmt.Printf
146
- func PrintLog (name string , loggerLevel , logLevel Level , format string , a []interface {}) {
147
- if loggerLevel < logLevel {
148
- return
149
- }
43
+ func PrintLog (logLevel Level , format string , a []interface {}) {
150
44
for _ , w := range globalWriters {
151
- w .WriteLog (name , logLevel , format , a )
45
+ w .WriteLog (logLevel , format , a )
152
46
}
153
47
}
154
48
155
49
// Err log to root logger
156
50
func Err (format string , a ... interface {}) error {
157
- return globalLogger .Err (format , a ... )
51
+ PrintLog (ERROR , format , a )
52
+ return fmt .Errorf (format , a ... )
158
53
}
159
54
160
55
// Error log to root logger
161
56
func Error (format string , a ... interface {}) {
162
- globalLogger . Error ( format , a ... )
57
+ PrintLog ( ERROR , format , a )
163
58
}
164
59
165
60
// Info log to root logger
166
61
func Info (format string , a ... interface {}) {
167
- globalLogger . Info ( format , a ... )
62
+ PrintLog ( INFO , format , a )
168
63
}
169
64
170
65
// Warn log to root logger
171
66
func Warn (format string , a ... interface {}) {
172
- globalLogger . Warn ( format , a ... )
67
+ PrintLog ( WARN , format , a )
173
68
}
174
69
175
70
// Debug log to root logger
176
71
func Debug (format string , a ... interface {}) {
177
- globalLogger . Debug ( format , a ... )
72
+ PrintLog ( DEBUG , format , a )
178
73
}
179
74
180
75
// Panic log to root logger
181
76
func Panic (format string , a ... interface {}) {
182
- globalLogger .Panic (format , a ... )
77
+ PrintLog (ERROR , format , a )
78
+ panic (fmt .Errorf (format , a ... ))
183
79
}
184
80
185
81
// resolves configuration
@@ -219,24 +115,6 @@ func LoadLogProperties() {
219
115
SetTrace (true )
220
116
}
221
117
222
- //
223
- // Levels
224
- //
225
- logLevels := make (map [string ]Level )
226
- logLevels ["" ] = StrToLevel (props .GetString ("log.level" , "" ))
227
- for k , v := range props .Map () {
228
- if ! strings .HasPrefix (k , "log.level." ) {
229
- continue
230
- }
231
-
232
- parts := strings .Split (k , "." )
233
- if len (parts ) != 3 {
234
- continue
235
- }
236
- loggerName := parts [2 ] //log.level.name1=stdout|file
237
- logLevels [loggerName ] = StrToLevel (v )
238
- }
239
-
240
118
//
241
119
// Writers
242
120
//
@@ -274,7 +152,6 @@ func LoadLogProperties() {
274
152
}
275
153
}
276
154
277
- SetLoggerLevels (logLevels )
278
155
if len (logWriters ) > 0 {
279
156
SetWriters (logWriters )
280
157
}
0 commit comments