@@ -9,64 +9,16 @@ import (
99)
1010
1111var (
12- globalLoadedConfig = false
13- globalLevels = make (map [string ]Level )
14- globalLoggers = make (map [string ]Logger )
1512 globalWriters = []Writer {getDefaultWriter ()}
16- globalLogger = New ("" )
1713 globalTraceEnabled = false
1814)
1915
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-
3116// Writer writer interface
3217type Writer interface {
33- WriteLog (name string , logLevel Level , format string , args []interface {})
18+ WriteLog (logLevel Level , format string , args []interface {})
3419 SetLevel (level Level )
3520}
3621
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-
7022// SetTrace when set to true, the log will print file names and line numbers
7123func SetTrace (trace bool ) {
7224 globalTraceEnabled = trace
@@ -77,109 +29,53 @@ func IsTraceEnabled() bool {
7729 return globalTraceEnabled
7830}
7931
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-
9832// SetWriters sets the writers for all the loggers
9933func SetWriters (w []Writer ) {
10034 globalWriters = w
10135}
10236
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-
14037// PrintLog sends a log message to the writers.
14138// name: logger name
14239// loggerLevel: the level of the logger implementation
14340// logLevel: the level of the message. If the level of the message is greater than loggerLevel the log will bi discarted
14441// format: log format. See fmt.Printf
14542// 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 {}) {
15044 for _ , w := range globalWriters {
151- w .WriteLog (name , logLevel , format , a )
45+ w .WriteLog (logLevel , format , a )
15246 }
15347}
15448
15549// Err log to root logger
15650func Err (format string , a ... interface {}) error {
157- return globalLogger .Err (format , a ... )
51+ PrintLog (ERROR , format , a )
52+ return fmt .Errorf (format , a ... )
15853}
15954
16055// Error log to root logger
16156func Error (format string , a ... interface {}) {
162- globalLogger . Error ( format , a ... )
57+ PrintLog ( ERROR , format , a )
16358}
16459
16560// Info log to root logger
16661func Info (format string , a ... interface {}) {
167- globalLogger . Info ( format , a ... )
62+ PrintLog ( INFO , format , a )
16863}
16964
17065// Warn log to root logger
17166func Warn (format string , a ... interface {}) {
172- globalLogger . Warn ( format , a ... )
67+ PrintLog ( WARN , format , a )
17368}
17469
17570// Debug log to root logger
17671func Debug (format string , a ... interface {}) {
177- globalLogger . Debug ( format , a ... )
72+ PrintLog ( DEBUG , format , a )
17873}
17974
18075// Panic log to root logger
18176func Panic (format string , a ... interface {}) {
182- globalLogger .Panic (format , a ... )
77+ PrintLog (ERROR , format , a )
78+ panic (fmt .Errorf (format , a ... ))
18379}
18480
18581// resolves configuration
@@ -219,24 +115,6 @@ func LoadLogProperties() {
219115 SetTrace (true )
220116 }
221117
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-
240118 //
241119 // Writers
242120 //
@@ -274,7 +152,6 @@ func LoadLogProperties() {
274152 }
275153 }
276154
277- SetLoggerLevels (logLevels )
278155 if len (logWriters ) > 0 {
279156 SetWriters (logWriters )
280157 }
0 commit comments