diff --git a/example/main.go b/example/main.go index dabdd6c..7039982 100755 --- a/example/main.go +++ b/example/main.go @@ -120,6 +120,7 @@ func main() { // SetLevelWriter(glg.WARN, customWriter). // SetLevelWriter(glg.ERR, customWriter). // EnableJSON(). + SetLineTraceMode(glg.TraceLineNone). AddLevelWriter(glg.INFO, infolog). // add info log file destination AddLevelWriter(glg.ERR, errlog). // add error log file destination AddLevelWriter(glg.WARN, rotate) // add error log file destination @@ -173,23 +174,30 @@ func main() { glg.Info("kpango's glg support line trace logging") glg.Error("error log shows short line trace by default") glg.Info("error log shows none trace by default") - glg.Get().SetTraceLineFlag(glg.LTraceLineShort) - glg.Error("after configure LTraceLineShort, error log shows short line trace") - glg.Info("after configure LTraceLineShort, info log shows short line trace") + glg.Get().SetLineTraceMode(glg.TraceLineShort) + glg.Error("after configure TraceLineShort, error log shows short line trace") + glg.Info("after configure TraceLineShort, info log shows short line trace") glg.Get().DisableTimestamp() - glg.Error("after configure LTraceLineShort and DisableTimestamp, error log shows short line trace without timestamp") - glg.Info("after configure LTraceLineShort and DisableTimestamp, info log shows short line trace without timestamp") + glg.Error("after configure TraceLineShort and DisableTimestamp, error log shows short line trace without timestamp") + glg.Info("after configure TraceLineShort and DisableTimestamp, info log shows short line trace without timestamp") glg.Get().EnableTimestamp() - - glg.Get().SetTraceLineFlag(glg.LTraceLineLong) - glg.Error("after configure LTraceLineLong, error log shows long line trace") - glg.Info("after configure LTraceLineLong, info log shows long line trace") + glg.Get().SetLineTraceMode(glg.TraceLineLong) + glg.Error("after configure TraceLineLong, error log shows long line trace") + glg.Info("after configure TraceLineLong, info log shows long line trace") glg.Get().DisableTimestamp() - glg.Error("after configure LTraceLineLong and DisableTimestamp, error log shows long line trace without timestamp") - glg.Info("after configure LTraceLineLong and DisableTimestamp, info log shows long line trace without timestamp") + glg.Error("after configure TraceLineLong and DisableTimestamp, error log shows long line trace without timestamp") + glg.Info("after configure TraceLineLong and DisableTimestamp, info log shows long line trace without timestamp") glg.Get().EnableTimestamp() - glg.Get().SetTraceLineFlag(glg.LTraceLineNone) - glg.Error("after configure LTraceLineNone, error log shows long line trace") + glg.Get().SetLineTraceMode(glg.TraceLineNone) + glg.Error("after configure TraceLineNone, error log without line trace") + glg.Info("after configure TraceLineNone, info log without line trace") + glg.Get().SetLevelLineTraceMode(glg.INFO, glg.TraceLineLong) + glg.Info("after configure Level trace INFO=TraceLineLong, only info log shows long line trace") + glg.Error("after configure Level trace INFO=TraceLineLong, error log without long line trace") + glg.Get().SetLevelLineTraceMode(glg.ERR, glg.TraceLineShort) + glg.Info("after configure Level trace ERR=TraceLineShort, info log still shows long line trace") + glg.Error("after configure Level trace ERR=TraceLineShort, error log now shows short line trace") + glg.Get().SetLineTraceMode(glg.TraceLineNone) glg.Info("kpango's glg support json logging") glg.Get().EnableJSON() diff --git a/glg.go b/glg.go index ed0a2f9..5202131 100755 --- a/glg.go +++ b/glg.go @@ -69,6 +69,8 @@ type LEVEL uint8 type wMode uint8 +type traceMode int64 + type logger struct { tag string rawtag []byte @@ -76,7 +78,7 @@ type logger struct { std io.Writer color func(string) string isColor bool - flag int + traceMode traceMode mode MODE prevMode MODE writeMode wMode @@ -145,10 +147,9 @@ const ( sep = "]:" + tab sepl = len(sep) - // LTraceLine is flags for tracing log line - LTraceLineNone = 1 << iota - LTraceLineShort - LTraceLineLong + TraceLineNone traceMode = 1 << iota + TraceLineShort + TraceLineLong ) var ( @@ -227,75 +228,75 @@ func New() *Glg { for lev, log := range map[LEVEL]*logger{ // standard out DEBG: { - std: os.Stdout, - color: Purple, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Purple, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, TRACE: { - std: os.Stdout, - color: Yellow, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Yellow, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, PRINT: { - std: os.Stdout, - color: Colorless, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Colorless, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, LOG: { - std: os.Stdout, - color: Colorless, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Colorless, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, INFO: { - std: os.Stdout, - color: Green, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Green, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, OK: { - std: os.Stdout, - color: Cyan, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Cyan, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, WARN: { - std: os.Stdout, - color: Orange, - isColor: true, - mode: STD, - flag: LTraceLineNone, + std: os.Stdout, + color: Orange, + isColor: true, + mode: STD, + traceMode: TraceLineNone, }, // error out ERR: { - std: os.Stderr, - color: Red, - isColor: true, - mode: STD, - flag: LTraceLineShort, + std: os.Stderr, + color: Red, + isColor: true, + mode: STD, + traceMode: TraceLineShort, }, FAIL: { - std: os.Stderr, - color: Red, - isColor: true, - mode: STD, - flag: LTraceLineShort, + std: os.Stderr, + color: Red, + isColor: true, + mode: STD, + traceMode: TraceLineShort, }, FATAL: { - std: os.Stderr, - color: Red, - isColor: true, - mode: STD, - flag: LTraceLineLong, + std: os.Stderr, + color: Red, + isColor: true, + mode: STD, + traceMode: TraceLineLong, }, } { log.tag = lev.String() @@ -565,21 +566,21 @@ func (g *Glg) DisableLevelTimestamp(lv LEVEL) *Glg { return g } -// SetTraceLineFlag configures output line traceFlag -func (g *Glg) SetTraceLineFlag(flg int) *Glg { +// SetLineTraceMode configures output line traceFlag +func (g *Glg) SetLineTraceMode(mode traceMode) *Glg { g.logger.Range(func(lev LEVEL, l *logger) bool { - l.flag = flg + l.traceMode = mode g.logger.Store(lev, l) return true }) return g } -// SetLevelTraceLineFlag configures output line traceFlag -func (g *Glg) SetLevelTraceLineFlag(lv LEVEL, flg int) *Glg { +// SetLevelLineTraceMode configures output line traceFlag +func (g *Glg) SetLevelLineTraceMode(lv LEVEL, mode traceMode) *Glg { l, ok := g.logger.Load(lv) if ok { - l.flag = flg + l.traceMode = mode g.logger.Store(lv, l) } return g @@ -826,12 +827,12 @@ func (g *Glg) out(level LEVEL, calldepth int, format string, val ...interface{}) } var fl string - if log.flag&(LTraceLineLong|LTraceLineShort) != 0 { + if log.traceMode&(TraceLineLong|TraceLineShort) != 0 { _, file, line, ok := runtime.Caller(calldepth) switch { case !ok: fl = "???:0" - case log.flag<raceLineShort != 0: + case log.traceMode&TraceLineShort != 0: for i := len(file) - 1; i > 0; i-- { if file[i] == '/' { file = file[i+1:] diff --git a/go.mod b/go.mod index 85558b2..8b3fd67 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.17 require ( github.com/goccy/go-json v0.7.4 - github.com/kpango/fastime v1.0.16 + github.com/kpango/fastime v1.0.17 github.com/sirupsen/logrus v1.8.1 go.uber.org/zap v1.18.1 ) diff --git a/go.sum b/go.sum index 9c7b68d..4dee8b8 100644 --- a/go.sum +++ b/go.sum @@ -5,8 +5,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/goccy/go-json v0.7.4 h1:B44qRUFwz/vxPKPISQ1KhvzRi9kZ28RAf6YtjriBZ5k= github.com/goccy/go-json v0.7.4/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/kpango/fastime v1.0.16 h1:1prFG/3pTjzcDeCTxt98VB4IvjxcySLs0ldCEhZg0R8= -github.com/kpango/fastime v1.0.16/go.mod h1:lVqUTcXmQnk1wriyvq5DElbRSRDC0XtqbXQRdz0Eo+g= +github.com/kpango/fastime v1.0.17 h1:IZOBLEJrr2MIpsY1ihGhpkY+9pEikJWYwPEMu0/VdcY= +github.com/kpango/fastime v1.0.17/go.mod h1:lVqUTcXmQnk1wriyvq5DElbRSRDC0XtqbXQRdz0Eo+g= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=