Skip to content

Commit e63f810

Browse files
authored
Merge pull request #440 from TarsCloud/feature/lbbniu/rogger
perf(rogger): log increase convenience method
2 parents 476e53d + 2d778fa commit e63f810

File tree

3 files changed

+78
-29
lines changed

3 files changed

+78
-29
lines changed

tars/util/rogger/dyeing.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ func (l *Logger) DyeingWritef(ctx context.Context, depth int, level LogLevel, ex
9090
} else {
9191
file = filepath.Base(file)
9292
}
93-
fmt.Fprintf(buf, "%s:%s:%d|", file, getFuncName(runtime.FuncForPC(pc).Name()), line)
93+
fmt.Fprintf(buf, "%s:%s:%d|", file, FuncName(runtime.FuncForPC(pc)), line)
9494
}
95-
if colored && l.IsConsoleWriter() {
96-
buf.WriteString(level.coloredString())
95+
if IsColored() && l.IsConsoleWriter() {
96+
buf.WriteString(level.ColoredString())
9797
} else {
9898
buf.WriteString(level.String())
9999
}

tars/util/rogger/logger.go

+72-23
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,14 @@ type Logger struct {
5454
}
5555

5656
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"`
6365
}
6466

6567
// LogLevel is uint8 type
@@ -95,8 +97,8 @@ func (lv *LogLevel) String() string {
9597
}
9698
}
9799

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 {
100102
switch *lv {
101103
case DEBUG:
102104
return "\x1b[34mDEBUG\x1b[0m" // blue
@@ -166,14 +168,19 @@ func GetLogFormat() LogFormat {
166168

167169
// GetFormat get global log format and return string
168170
func GetFormat() string {
169-
return logLevel.String()
171+
return logFormat.String()
170172
}
171173

172174
// Colored enable colored level string when use console writer
173175
func Colored() {
174176
colored = true
175177
}
176178

179+
// IsColored returns whether to enable colored when use console writer
180+
func IsColored() bool {
181+
return colored
182+
}
183+
177184
// StringToLevel turns string to LogLevel
178185
func StringToLevel(level string) LogLevel {
179186
switch level {
@@ -200,16 +207,43 @@ func SetCallerFlag(flag bool) {
200207
callerFlag = flag
201208
}
202209

210+
// CallerFlag returns the caller's state string when writing to the log
211+
func CallerFlag() bool {
212+
return callerFlag
213+
}
214+
203215
// SetLogName sets the log name
216+
// Deprecated: recommended to use SetName, v1.4.0 will be removed
204217
func (l *Logger) SetLogName(name string) {
205218
l.name = name
206219
}
207220

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+
208231
// SetLogPrefix sets the log line prefix
232+
// Deprecated: recommended to use SetPrefix, v1.4.0 will be removed
209233
func (l *Logger) SetLogPrefix(pre string) {
210234
l.prefix = pre
211235
}
212236

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+
213247
// SetFileRoller sets the file rolled by size in MB, with max num of files.
214248
func (l *Logger) SetFileRoller(logpath string, num int, sizeMB int) error {
215249
if err := os.MkdirAll(logpath, 0755); err != nil {
@@ -230,6 +264,11 @@ func (l *Logger) SetWriter(w LogWriter) {
230264
l.writer = w
231265
}
232266

267+
// Writer return the log LogWriter.
268+
func (l *Logger) Writer() LogWriter {
269+
return l.writer
270+
}
271+
233272
// SetDayRoller sets the logger to rotate by day, with max num files.
234273
func (l *Logger) SetDayRoller(logpath string, num int) error {
235274
if err := os.MkdirAll(logpath, 0755); err != nil {
@@ -314,21 +353,25 @@ func (l *Logger) Writef(depth int, level LogLevel, format string, v []interface{
314353
}
315354

316355
if logFormat == Json {
317-
logQueue <- l.WriteJsonF(depth, level, format, v)
356+
logQueue <- l.writeJson(depth, level, format, v)
318357
} else {
319-
logQueue <- l.WriteLineF(depth, level, format, v)
358+
logQueue <- l.writeLine(depth, level, format, v)
320359
}
321360
}
322361

362+
// Deprecated: will be removed in a future version, v1.4.0 will be removed
323363
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 {
324368
buf := bytes.NewBuffer(nil)
325369
if l.writer.NeedPrefix() {
370+
fmt.Fprintf(buf, "%s|", time.Now().Format("2006-01-02 15:04:05.000"))
326371
if len(l.prefix) > 0 {
327372
fmt.Fprintf(buf, "%s|", l.prefix)
328373
}
329374

330-
fmt.Fprintf(buf, "%s|", time.Now().Format("2006-01-02 15:04:05.000"))
331-
332375
if callerFlag {
333376
pc, file, line, ok := runtime.Caller(depth + callerSkip)
334377
if !ok {
@@ -337,10 +380,10 @@ func (l *Logger) WriteLineF(depth int, level LogLevel, format string, v []interf
337380
} else {
338381
file = filepath.Base(file)
339382
}
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)
341384
}
342-
if colored && l.IsConsoleWriter() {
343-
buf.WriteString(level.coloredString())
385+
if IsColored() && l.IsConsoleWriter() {
386+
buf.WriteString(level.ColoredString())
344387
} else {
345388
buf.WriteString(level.String())
346389
}
@@ -358,7 +401,12 @@ func (l *Logger) WriteLineF(depth int, level LogLevel, format string, v []interf
358401
return &logValue{value: buf.Bytes(), writer: l.writer}
359402
}
360403

404+
// Deprecated: will be removed in a future version, v1.4.0 will be removed
361405
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 {
362410
log := JsonLog{}
363411
log.Pre = l.prefix
364412
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
371419
} else {
372420
file = filepath.Base(file)
373421
}
374-
log.Func = getFuncName(runtime.FuncForPC(pc).Name())
422+
log.Func = FuncName(runtime.FuncForPC(pc))
375423
log.File = fmt.Sprintf("%s:%d", file, line)
376424
}
377425
log.Level = level.String()
@@ -388,7 +436,13 @@ func (l *Logger) WriteJsonF(depth int, level LogLevel, format string, v []interf
388436
return &logValue{value: buf.Bytes(), writer: l.writer}
389437
}
390438

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()
392446
idx := strings.LastIndexByte(name, '/')
393447
if idx != -1 {
394448
name = name[idx:]
@@ -400,11 +454,6 @@ func getFuncName(name string) string {
400454
return name
401455
}
402456

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-
408457
// FlushLogger flush all log to disk.
409458
func FlushLogger() {
410459
syncCancel()

tars/util/rogger/logger_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import (
55
"time"
66
)
77

8-
// XTestLogger test logger writes.
9-
func XTestLogger(t *testing.T) {
8+
// TestLogger test logger writes.
9+
func TestLogger(t *testing.T) {
1010
SetLevel(DEBUG)
1111
lg := GetLogger("debug")
1212
// lg.SetConsole()
@@ -28,7 +28,7 @@ func XTestLogger(t *testing.T) {
2828
}
2929

3030
// XTestGetLogList test get log list
31-
func XTestGetLogList(t *testing.T) {
31+
func TestGetLogList(t *testing.T) {
3232
w := NewDateWriter("./logs", "abc", HOUR, 0)
3333
w.cleanOldLogs()
3434
}

0 commit comments

Comments
 (0)