Skip to content

Commit

Permalink
fix log error (#16)
Browse files Browse the repository at this point in the history
  • Loading branch information
kooksee authored Jun 16, 2024
1 parent 1b455b2 commit 577d5e8
Show file tree
Hide file tree
Showing 6 changed files with 101 additions and 42 deletions.
11 changes: 7 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,16 @@ require (
github.com/invopop/jsonschema v0.7.0
github.com/jinzhu/copier v0.3.5
github.com/k0kubun/pp/v3 v3.2.0
github.com/mattn/go-isatty v0.0.17
github.com/mattn/go-isatty v0.0.19
github.com/mattn/go-sqlite3 v1.14.15
github.com/mitchellh/mapstructure v1.5.0
github.com/open2b/scriggo v0.56.1
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
github.com/phuslu/goid v1.0.0
github.com/rs/xid v1.4.0
github.com/rs/zerolog v1.29.0
github.com/rs/xid v1.5.0
github.com/rs/zerolog v1.33.0
github.com/stretchr/testify v1.8.1
github.com/tidwall/gjson v1.17.1
github.com/valyala/fastrand v1.1.0
github.com/valyala/fasttemplate v1.2.2
go.etcd.io/bbolt v1.3.7
Expand All @@ -45,7 +46,7 @@ require (

require (
github.com/coreos/go-semver v0.3.0 // indirect
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/google/go-cmp v0.5.9 // indirect
Expand All @@ -56,6 +57,8 @@ require (
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
github.com/tidwall/match v1.1.1 // indirect
github.com/tidwall/pretty v1.2.0 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
Expand Down
28 changes: 16 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ github.com/bradleyjkemp/memviz v0.2.3 h1:8fqKnV1xQz4NQkDy5Gklhm9fGtUK+R3oW0z1unB
github.com/bradleyjkemp/memviz v0.2.3/go.mod h1:meU694rvawW7NqtNLtlg+TEU+UqAjrbJayEPZQUSOBs=
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534 h1:rtAn27wIbmOGUs7RIbVgPEjb31ehTVniDwPGXyMxm5U=
github.com/coreos/go-systemd/v22 v22.3.3-0.20220203105225-a9a7ef127534/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/dave/jennifer v1.6.0 h1:MQ/6emI2xM7wt0tJzJzyUik2Q3Tcn2eE0vtYgh4GPVI=
github.com/dave/jennifer v1.6.0/go.mod h1:AxTG893FiZKqxy3FP1kL80VMshSMuz2G+EgvszgGRnk=
Expand Down Expand Up @@ -60,14 +60,12 @@ github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng=
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-sqlite3 v1.14.15 h1:vfoHhTN1af61xCRSWzFIWzx2YskyMTwHLrExkBOjvxI=
github.com/mattn/go-sqlite3 v1.14.15/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg=
github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
Expand All @@ -88,10 +86,10 @@ github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6O
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.29.0 h1:Zes4hju04hjbvkVkOhdl2HpZa+0PmVwigmo8XoORE5w=
github.com/rs/zerolog v1.29.0/go.mod h1:NILgTygv/Uej1ra5XxGf82ZFSLk58MFGAUS2o6usyD0=
github.com/rs/xid v1.5.0 h1:mKX4bl4iPYJtEIxp6CYiUuLQ/8DYMoz0PUdtGgMFRVc=
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
Expand All @@ -105,6 +103,12 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U=
github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fastrand v1.1.0 h1:f+5HkLW4rsgzdNoleUOB69hyT9IlD2ZQh9GyDMfb5G8=
Expand Down Expand Up @@ -153,10 +157,10 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand Down
12 changes: 5 additions & 7 deletions log/aaa.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
)

type (
Map = map[string]any
Hook = zerolog.Hook
Event = zerolog.Event
Level = zerolog.Level
LogEnableChecker = func(lvl Level, name string, fields Map) bool
Map = map[string]any
Hook = zerolog.Hook
Event = zerolog.Event
Level = zerolog.Level
EnableChecker = func(lvl Level, name string, fields Map) bool
)

type Logger interface {
Expand All @@ -37,5 +37,3 @@ type StdLogger interface {
Log(v ...interface{})
Println(v ...interface{})
}

var logEnableChecker LogEnableChecker = func(Level, string, Map) bool { return true }
22 changes: 22 additions & 0 deletions log/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,28 @@ func CreateEventCtx(ctx context.Context, evt *Event) context.Context {
return context.WithValue(ctx, ctxEventKey{}, evt)
}

func UpdateEventCtx(ctx context.Context, fields Map) context.Context {
if ctx == nil {
panic("ctx is nil")
}

if len(fields) == 0 {
return ctx
}

var evt = NewEvent()
for k, v := range fields {
evt.Any(k, v)
}

if e := getEventFromCtx(ctx); e != nil {

evt = mergeEvent(evt, e)
}

return context.WithValue(ctx, ctxEventKey{}, evt)
}

func getEventFromCtx(ctx context.Context) *Event {
evt, ok := ctx.Value(ctxEventKey{}).(*Event)
if ok {
Expand Down
18 changes: 14 additions & 4 deletions log/global.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package log
import (
"context"
"fmt"
"io"
"os"
"time"

Expand All @@ -15,6 +16,7 @@ import (
)

var (
logEnableChecker = func(Level, string, Map) bool { return true }
zErrMarshalFunc = zerolog.ErrorMarshalFunc
zInterfaceMarshalFunc = zerolog.InterfaceMarshalFunc
_ = generic.Init(func() {
Expand Down Expand Up @@ -43,14 +45,12 @@ var (

zerolog.InterfaceMarshalFunc = func(v any) ([]byte, error) {
if v == nil {
return nil, nil
return []byte("null"), nil
}

switch e1 := v.(type) {
case json.Marshaler:
return e1.MarshalJSON()
case error:
return json.Marshal(e1.Error())
}

return zInterfaceMarshalFunc(v)
Expand Down Expand Up @@ -87,7 +87,13 @@ func SetLogger(log *zerolog.Logger) {
zlog.Logger = *log
}

func SetEnableChecker(checker LogEnableChecker) { logEnableChecker = checker }
func SetEnableChecker(checker EnableChecker) {
if checker == nil {
return
}

logEnableChecker = checker
}

// Err starts a new message with error level with err as a field if not nil or
// with info level if err is nil.
Expand Down Expand Up @@ -152,3 +158,7 @@ func Print(v ...interface{}) {
func Printf(format string, v ...interface{}) {
stdLog.Debug().CallerSkipFrame(1).Msgf(format, v...)
}

func Output(w io.Writer) Logger {
return New(generic.Ptr(stdZeroLog.Output(w)))
}
52 changes: 37 additions & 15 deletions log/z_log_test.go
Original file line number Diff line number Diff line change
@@ -1,18 +1,25 @@
package log_test

import (
"bytes"
"context"
"fmt"
"testing"

"github.com/pubgo/funk/errors"
"github.com/pubgo/funk/generic"
"github.com/pubgo/funk/log"
"github.com/rs/zerolog"
zl "github.com/rs/zerolog/log"
"github.com/stretchr/testify/assert"
"github.com/tidwall/gjson"
)

func TestNilLog(t *testing.T) {
var buf bytes.Buffer
log.Output(&buf).Debug().Any("key", nil).Send()
ret := gjson.ParseBytes(buf.Bytes())
assert.Equal(t, ret.Get("key").String(), "")
}

func TestWithDisabled(t *testing.T) {
ctx := log.WithDisabled(nil)
evt := log.Info(ctx).Str("hello", "world world")
Expand Down Expand Up @@ -41,10 +48,25 @@ func TestName(t *testing.T) {
}

func TestEvent(t *testing.T) {
evt := log.NewEvent().Str("hello", "world").Int("int", 100).Dict("ddd", log.NewEvent())
ctx := log.CreateEventCtx(context.Background(), evt)
ee := log.Info(ctx).Str("info", "abcd").Func(log.WithEvent(evt))
ee.Msg("dddd")
var getEvt = func() *log.Event {
return log.NewEvent().Str("hello", "world").Int("int", 100).Dict("ddd", log.NewEvent())
}

var getCtx = func(evt *log.Event) context.Context {
return log.CreateEventCtx(context.Background(), evt)
}

t.Run("event ctx", func(t *testing.T) {
log.Info(getCtx(getEvt())).Send()
})

t.Run("event func", func(t *testing.T) {
log.Info().Func(log.WithEvent(getEvt())).Send()
})

t.Run("update event ctx", func(t *testing.T) {
log.Info(log.UpdateEventCtx(getCtx(getEvt()), log.Map{"add-update-event": "ok"})).Send()
})
}

func TestWithEvent(t *testing.T) {
Expand All @@ -54,12 +76,11 @@ func TestWithEvent(t *testing.T) {
}

func TestSetLog(t *testing.T) {
// zerolog.SetGlobalLevel(zerolog.ErrorLevel)
log.SetLogger(generic.Ptr(zl.Output(zerolog.NewConsoleWriter())))
log.Debug().Msg("test")
log.Info().Msg("test")
log.Warn().Msg("test")
log.Error().Msg("test")
logger := log.Output(zerolog.NewConsoleWriter())
logger.Debug().Msg("test")
logger.Info().Msg("test")
logger.Warn().Msg("test")
logger.Error().Msg("test")
}

func TestChecker(t *testing.T) {
Expand All @@ -84,10 +105,11 @@ func TestErr(t *testing.T) {
log.Error().Err(err1).Msg(err1.Error())
}

func TestAny(t *testing.T) {
func TestError(t *testing.T) {
err := fmt.Errorf("test error")
log.Error().Err(err).Any("err", err).Msg(err.Error())
log.Error().Err(err).Msg(err.Error())

err1 := errors.NewFmt("test format")
log.Error().Err(err1).Any("err", err1).Msg(err1.Error())
log.Error().Err(err1).Msg(err1.Error())
log.Err(err1).Msg(err1.Error())
}

0 comments on commit 577d5e8

Please sign in to comment.