@@ -54,12 +54,14 @@ type Logger struct {
54
54
}
55
55
56
56
type JsonLog struct {
57
- Pre string `json:"pre,omitempty"`
58
- Time string `json:"time"`
59
- Func string `json:"func"`
60
- File string `json:"file"`
61
- Level string `json:"level"`
62
- Msg string `json:"msg"`
57
+ Pre string `json:"pre,omitempty"`
58
+ Time string `json:"time"`
59
+ TraceId string `json:"trace_id,omitempty"`
60
+ SpanId string `json:"span_id,omitempty"`
61
+ Func string `json:"func"`
62
+ File string `json:"file"`
63
+ Level string `json:"level"`
64
+ Msg string `json:"msg"`
63
65
}
64
66
65
67
// LogLevel is uint8 type
@@ -95,8 +97,8 @@ func (lv *LogLevel) String() string {
95
97
}
96
98
}
97
99
98
- // Colored enable colored level string when use console writer
99
- func (lv * LogLevel ) coloredString () string {
100
+ // ColoredString enable colored level string when use console writer
101
+ func (lv * LogLevel ) ColoredString () string {
100
102
switch * lv {
101
103
case DEBUG :
102
104
return "\x1b [34mDEBUG\x1b [0m" // blue
@@ -166,14 +168,19 @@ func GetLogFormat() LogFormat {
166
168
167
169
// GetFormat get global log format and return string
168
170
func GetFormat () string {
169
- return logLevel .String ()
171
+ return logFormat .String ()
170
172
}
171
173
172
174
// Colored enable colored level string when use console writer
173
175
func Colored () {
174
176
colored = true
175
177
}
176
178
179
+ // IsColored returns whether to enable colored when use console writer
180
+ func IsColored () bool {
181
+ return colored
182
+ }
183
+
177
184
// StringToLevel turns string to LogLevel
178
185
func StringToLevel (level string ) LogLevel {
179
186
switch level {
@@ -200,16 +207,43 @@ func SetCallerFlag(flag bool) {
200
207
callerFlag = flag
201
208
}
202
209
210
+ // CallerFlag returns the caller's state string when writing to the log
211
+ func CallerFlag () bool {
212
+ return callerFlag
213
+ }
214
+
203
215
// SetLogName sets the log name
216
+ // Deprecated: recommended to use SetName, v1.4.0 will be removed
204
217
func (l * Logger ) SetLogName (name string ) {
205
218
l .name = name
206
219
}
207
220
221
+ // SetName sets the log name
222
+ func (l * Logger ) SetName (name string ) {
223
+ l .name = name
224
+ }
225
+
226
+ // Name return the log name
227
+ func (l * Logger ) Name () string {
228
+ return l .name
229
+ }
230
+
208
231
// SetLogPrefix sets the log line prefix
232
+ // Deprecated: recommended to use SetPrefix, v1.4.0 will be removed
209
233
func (l * Logger ) SetLogPrefix (pre string ) {
210
234
l .prefix = pre
211
235
}
212
236
237
+ // SetPrefix sets the log line prefix
238
+ func (l * Logger ) SetPrefix (prefix string ) {
239
+ l .prefix = prefix
240
+ }
241
+
242
+ // Prefix returns the log line prefix
243
+ func (l * Logger ) Prefix () string {
244
+ return l .prefix
245
+ }
246
+
213
247
// SetFileRoller sets the file rolled by size in MB, with max num of files.
214
248
func (l * Logger ) SetFileRoller (logpath string , num int , sizeMB int ) error {
215
249
if err := os .MkdirAll (logpath , 0755 ); err != nil {
@@ -230,6 +264,11 @@ func (l *Logger) SetWriter(w LogWriter) {
230
264
l .writer = w
231
265
}
232
266
267
+ // Writer return the log LogWriter.
268
+ func (l * Logger ) Writer () LogWriter {
269
+ return l .writer
270
+ }
271
+
233
272
// SetDayRoller sets the logger to rotate by day, with max num files.
234
273
func (l * Logger ) SetDayRoller (logpath string , num int ) error {
235
274
if err := os .MkdirAll (logpath , 0755 ); err != nil {
@@ -314,21 +353,25 @@ func (l *Logger) Writef(depth int, level LogLevel, format string, v []interface{
314
353
}
315
354
316
355
if logFormat == Json {
317
- logQueue <- l .WriteJsonF (depth , level , format , v )
356
+ logQueue <- l .writeJson (depth , level , format , v )
318
357
} else {
319
- logQueue <- l .WriteLineF (depth , level , format , v )
358
+ logQueue <- l .writeLine (depth , level , format , v )
320
359
}
321
360
}
322
361
362
+ // Deprecated: will be removed in a future version, v1.4.0 will be removed
323
363
func (l * Logger ) WriteLineF (depth int , level LogLevel , format string , v []interface {}) * logValue {
364
+ return l .writeLine (depth , level , format , v )
365
+ }
366
+
367
+ func (l * Logger ) writeLine (depth int , level LogLevel , format string , v []interface {}) * logValue {
324
368
buf := bytes .NewBuffer (nil )
325
369
if l .writer .NeedPrefix () {
370
+ fmt .Fprintf (buf , "%s|" , time .Now ().Format ("2006-01-02 15:04:05.000" ))
326
371
if len (l .prefix ) > 0 {
327
372
fmt .Fprintf (buf , "%s|" , l .prefix )
328
373
}
329
374
330
- fmt .Fprintf (buf , "%s|" , time .Now ().Format ("2006-01-02 15:04:05.000" ))
331
-
332
375
if callerFlag {
333
376
pc , file , line , ok := runtime .Caller (depth + callerSkip )
334
377
if ! ok {
@@ -337,10 +380,10 @@ func (l *Logger) WriteLineF(depth int, level LogLevel, format string, v []interf
337
380
} else {
338
381
file = filepath .Base (file )
339
382
}
340
- fmt .Fprintf (buf , "%s:%s:%d|" , file , getFuncName (runtime .FuncForPC (pc ). Name ( )), line )
383
+ fmt .Fprintf (buf , "%s:%s:%d|" , file , FuncName (runtime .FuncForPC (pc )), line )
341
384
}
342
- if colored && l .IsConsoleWriter () {
343
- buf .WriteString (level .coloredString ())
385
+ if IsColored () && l .IsConsoleWriter () {
386
+ buf .WriteString (level .ColoredString ())
344
387
} else {
345
388
buf .WriteString (level .String ())
346
389
}
@@ -358,7 +401,12 @@ func (l *Logger) WriteLineF(depth int, level LogLevel, format string, v []interf
358
401
return & logValue {value : buf .Bytes (), writer : l .writer }
359
402
}
360
403
404
+ // Deprecated: will be removed in a future version, v1.4.0 will be removed
361
405
func (l * Logger ) WriteJsonF (depth int , level LogLevel , format string , v []interface {}) * logValue {
406
+ return l .writeJson (depth , level , format , v )
407
+ }
408
+
409
+ func (l * Logger ) writeJson (depth int , level LogLevel , format string , v []interface {}) * logValue {
362
410
log := JsonLog {}
363
411
log .Pre = l .prefix
364
412
log .Time = time .Now ().Format ("2006-01-02 15:04:05.000" )
@@ -371,7 +419,7 @@ func (l *Logger) WriteJsonF(depth int, level LogLevel, format string, v []interf
371
419
} else {
372
420
file = filepath .Base (file )
373
421
}
374
- log .Func = getFuncName (runtime .FuncForPC (pc ). Name ( ))
422
+ log .Func = FuncName (runtime .FuncForPC (pc ))
375
423
log .File = fmt .Sprintf ("%s:%d" , file , line )
376
424
}
377
425
log .Level = level .String ()
@@ -388,7 +436,13 @@ func (l *Logger) WriteJsonF(depth int, level LogLevel, format string, v []interf
388
436
return & logValue {value : buf .Bytes (), writer : l .writer }
389
437
}
390
438
391
- func getFuncName (name string ) string {
439
+ // WriteLog write log into log files ignore the log level and log prefix
440
+ func (l * Logger ) WriteLog (msg []byte ) {
441
+ logQueue <- & logValue {value : msg , writer : l .writer }
442
+ }
443
+
444
+ func FuncName (f * runtime.Func ) string {
445
+ name := f .Name ()
392
446
idx := strings .LastIndexByte (name , '/' )
393
447
if idx != - 1 {
394
448
name = name [idx :]
@@ -400,11 +454,6 @@ func getFuncName(name string) string {
400
454
return name
401
455
}
402
456
403
- // WriteLog write log into log files ignore the log level and log prefix
404
- func (l * Logger ) WriteLog (msg []byte ) {
405
- logQueue <- & logValue {value : msg , writer : l .writer }
406
- }
407
-
408
457
// FlushLogger flush all log to disk.
409
458
func FlushLogger () {
410
459
syncCancel ()
0 commit comments