|
@@ -0,0 +1,47 @@
|
|
|
+package prettylog
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "runtime"
|
|
|
+ "strings"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type PrettyLogWritter struct {
|
|
|
+ lastTime time.Time
|
|
|
+ counter int64
|
|
|
+}
|
|
|
+
|
|
|
+func New() *PrettyLogWritter {
|
|
|
+ return &PrettyLogWritter{time.Now(), 0}
|
|
|
+}
|
|
|
+
|
|
|
+func (this *PrettyLogWritter) Write(b []byte) (int, error) {
|
|
|
+
|
|
|
+ ptr, _, line, _ := runtime.Caller(3)
|
|
|
+ tname := runtime.FuncForPC(ptr).Name()
|
|
|
+ li := strings.LastIndex(tname, "/")
|
|
|
+ fname := tname[li+1:]
|
|
|
+
|
|
|
+ timeDiff := time.Since(this.lastTime)
|
|
|
+
|
|
|
+ var fduration float64 = float64(timeDiff.Nanoseconds()) / 1000000.0
|
|
|
+
|
|
|
+ msg := fmt.Sprintf("[%d:\033[34m%s\033[0m (\033[33m%s:%d\033[0m) \033[90m+%.2f/ms\033[0m]: %s",
|
|
|
+ this.counter,
|
|
|
+ time.Now().Format("2006-01-02 15:04:05"),
|
|
|
+ fname,
|
|
|
+ line,
|
|
|
+ fduration,
|
|
|
+ string(b),
|
|
|
+ )
|
|
|
+ this.lastTime = time.Now()
|
|
|
+ this.counter++
|
|
|
+
|
|
|
+ return fmt.Print(msg)
|
|
|
+}
|
|
|
+
|
|
|
+func CreateLogger() *log.Logger {
|
|
|
+ return log.New(New(), "", 0)
|
|
|
+}
|