Skip to content

Commit

Permalink
[patch] bugfix shift overflow on android device #107
Browse files Browse the repository at this point in the history
Signed-off-by: kpango <[email protected]>
  • Loading branch information
kpango committed Jul 16, 2021
1 parent 6cfd022 commit 4b76409
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 79 deletions.
34 changes: 21 additions & 13 deletions example/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()
Expand Down
127 changes: 64 additions & 63 deletions glg.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,16 @@ type LEVEL uint8

type wMode uint8

type traceMode int64

type logger struct {
tag string
rawtag []byte
writer io.Writer
std io.Writer
color func(string) string
isColor bool
flag int
traceMode traceMode
mode MODE
prevMode MODE
writeMode wMode
Expand Down Expand Up @@ -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 (
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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&LTraceLineShort != 0:
case log.traceMode&TraceLineShort != 0:
for i := len(file) - 1; i > 0; i-- {
if file[i] == '/' {
file = file[i+1:]
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -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=
Expand Down

0 comments on commit 4b76409

Please sign in to comment.