Skip to content

Commit b727e66

Browse files
author
Yusuke Kato
committed
[patch] add glg.RawString function for Custom Writer (#27)
Add RawString function Usage is below ```go type obj struct{} func (n obj) Write(b []byte) (int, error) { glg.Infof("RawString is %s", glg.RawString(b)) // RawString is debug return len(b), nil } ``` ```go glg.Get().AddLevelWriter(glg.DEBG, obj{}) glg.Debug("debug") ``` Signed-off-by: kpango <[email protected]>
1 parent 12d916b commit b727e66

File tree

3 files changed

+81
-7
lines changed

3 files changed

+81
-7
lines changed

example/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ func (n NetWorkLogger) Write(b []byte) (int, error) {
1414
// http.Post("localhost:8080/log", "", bytes.NewReader(b))
1515
http.Get("http://127.0.0.1:8080/log")
1616
glg.Success("Requested")
17+
glg.Infof("RawString is %s", glg.RawString(b))
1718
return 1, nil
1819
}
1920

glg.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010
"os"
1111
"path/filepath"
12+
"strings"
1213
"sync"
1314
"sync/atomic"
1415
"time"
@@ -86,6 +87,13 @@ const (
8687
dfl = len(df) / 3
8788

8889
timeFormat = "2006-01-02 15:04:05"
90+
91+
// return code
92+
rc = "\n"
93+
rcl = len(rc)
94+
95+
sep = "]:\t"
96+
sepl = len(sep)
8997
)
9098

9199
var (
@@ -472,6 +480,17 @@ func (g *Glg) DisableLevelColor(lv LEVEL) *Glg {
472480
return g
473481
}
474482

483+
// RawString returns raw log string exclude time & tags
484+
func (g *Glg) RawString(data []byte) string {
485+
str := *(*string)(unsafe.Pointer(&data))
486+
return str[strings.Index(str, sep)+sepl : len(str)-rcl]
487+
}
488+
489+
// RawString returns raw log string exclude time & tags
490+
func RawString(data []byte) string {
491+
return glg.RawString(data)
492+
}
493+
475494
// TagStringToLevel converts level string to Glg.LEVEL
476495
func (g *Glg) TagStringToLevel(tag string) LEVEL {
477496
l, ok := g.levelMap.Load(tag)
@@ -626,28 +645,28 @@ func (g *Glg) out(level LEVEL, format string, val ...interface{}) error {
626645
b.Write(g.ft.FormattedNow())
627646
b.WriteString("\t[")
628647
b.WriteString(log.tag)
629-
b.WriteString("]:\t")
648+
b.WriteString(sep)
630649
b.WriteString(format)
631650

632651
switch log.writeMode {
633652
case writeColorStd:
634653
buf = b.Bytes()
635-
_, err = fmt.Fprintf(log.std, log.color(*(*string)(unsafe.Pointer(&buf)))+"\n", val...)
654+
_, err = fmt.Fprintf(log.std, log.color(*(*string)(unsafe.Pointer(&buf)))+rc, val...)
636655
case writeStd:
637-
b.WriteString("\n")
656+
b.WriteString(rc)
638657
buf = b.Bytes()
639658
_, err = fmt.Fprintf(log.std, *(*string)(unsafe.Pointer(&buf)), val...)
640659
case writeWriter:
641-
b.WriteString("\n")
660+
b.WriteString(rc)
642661
buf = b.Bytes()
643662
_, err = fmt.Fprintf(log.writer, *(*string)(unsafe.Pointer(&buf)), val...)
644663
case writeColorBoth:
645664
buf = b.Bytes()
646665
var str = *(*string)(unsafe.Pointer(&buf))
647-
_, err = fmt.Fprintf(log.std, log.color(str)+"\n", val...)
648-
_, err = fmt.Fprintf(log.writer, str+"\n", val...)
666+
_, err = fmt.Fprintf(log.std, log.color(str)+rc, val...)
667+
_, err = fmt.Fprintf(log.writer, str+rc, val...)
649668
case writeBoth:
650-
b.WriteString("\n")
669+
b.WriteString(rc)
651670
buf = b.Bytes()
652671
_, err = fmt.Fprintf(io.MultiWriter(log.std, log.writer), *(*string)(unsafe.Pointer(&buf)), val...)
653672
}

glg_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"reflect"
1212
"strings"
1313
"testing"
14+
"time"
1415
)
1516

1617
type ExitError int
@@ -3003,3 +3004,56 @@ func Test_blankFormat(t *testing.T) {
30033004
})
30043005
}
30053006
}
3007+
3008+
func TestGlg_RawString(t *testing.T) {
3009+
tests := []struct {
3010+
name string
3011+
args []byte
3012+
want string
3013+
}{
3014+
{
3015+
name: "trim",
3016+
args: []byte(time.Now().Format(timeFormat) + "\t[" + INFO.String() + "]:\tHello Glg" + rc),
3017+
want: "Hello Glg",
3018+
},
3019+
{
3020+
name: "trim hard",
3021+
args: []byte(time.Now().Format(timeFormat) + "\t[" + INFO.String() + "]:\tHello Glg]:\tHello" + rc),
3022+
want: "Hello Glg]:\tHello",
3023+
},
3024+
}
3025+
for _, tt := range tests {
3026+
t.Run(tt.name, func(t *testing.T) {
3027+
g := New()
3028+
if got := g.RawString(tt.args); got != tt.want {
3029+
t.Errorf("Glg.RawString() = %v, want %v", got, tt.want)
3030+
}
3031+
})
3032+
}
3033+
}
3034+
3035+
func TestRawString(t *testing.T) {
3036+
tests := []struct {
3037+
name string
3038+
args []byte
3039+
want string
3040+
}{
3041+
{
3042+
name: "trim",
3043+
args: []byte(time.Now().Format(timeFormat) + "\t[" + INFO.String() + "]:\tHello Glg" + rc),
3044+
want: "Hello Glg",
3045+
},
3046+
{
3047+
name: "trim hard",
3048+
args: []byte(time.Now().Format(timeFormat) + "\t[" + INFO.String() + "]:\tHello Glg]:\tHello" + rc),
3049+
want: "Hello Glg]:\tHello",
3050+
},
3051+
}
3052+
for _, tt := range tests {
3053+
t.Run(tt.name, func(t *testing.T) {
3054+
if got := RawString(tt.args); got != tt.want {
3055+
t.Errorf("Glg.RawString() = %v, want %v", got, tt.want)
3056+
}
3057+
})
3058+
}
3059+
}

0 commit comments

Comments
 (0)