diff --git a/exerr/builder.go b/exerr/builder.go index 7af499f..96be437 100644 --- a/exerr/builder.go +++ b/exerr/builder.go @@ -441,9 +441,9 @@ func (b *Builder) Output(ctx context.Context, g *gin.Context) { b.errorData.Output(g) - if b.errorData.Severity == SevErr || b.errorData.Severity == SevFatal { + if (b.errorData.Severity == SevErr || b.errorData.Severity == SevFatal) && (pkgconfig.ZeroLogErrGinOutput || pkgconfig.ZeroLogAllGinOutput) { b.errorData.Log(stackSkipLogger.Error()) - } else if b.errorData.Severity == SevWarn { + } else if (b.errorData.Severity == SevWarn) && (pkgconfig.ZeroLogAllGinOutput) { b.errorData.Log(stackSkipLogger.Warn()) } diff --git a/exerr/errinit.go b/exerr/errinit.go index b35f321..63288ba 100644 --- a/exerr/errinit.go +++ b/exerr/errinit.go @@ -14,6 +14,8 @@ type ErrorPackageConfig struct { ExtendGinOutput func(err *ExErr, json map[string]any) // (Optionally) extend the gin output with more fields ExtendGinDataOutput func(err *ExErr, depth int, json map[string]any) // (Optionally) extend the gin `__data` output with more fields DisableErrorWrapping bool // Disables the exerr.Wrap()...Build() function - will always return the original error + ZeroLogErrGinOutput bool // autom print zerolog logs on ginext.Error() / .Output(gin) (for SevErr and SevFatal) + ZeroLogAllGinOutput bool // autom print zerolog logs on ginext.Error() / .Output(gin) (for all Severities) } type ErrorPackageConfigInit struct { @@ -25,6 +27,8 @@ type ErrorPackageConfigInit struct { ExtendGinOutput func(err *ExErr, json map[string]any) ExtendGinDataOutput func(err *ExErr, depth int, json map[string]any) DisableErrorWrapping *bool + ZeroLogErrGinOutput *bool + ZeroLogAllGinOutput *bool } var initialized = false @@ -38,6 +42,8 @@ var pkgconfig = ErrorPackageConfig{ ExtendGinOutput: func(err *ExErr, json map[string]any) {}, ExtendGinDataOutput: func(err *ExErr, depth int, json map[string]any) {}, DisableErrorWrapping: false, + ZeroLogErrGinOutput: true, + ZeroLogAllGinOutput: false, } // Init initializes the exerr packages @@ -67,6 +73,8 @@ func Init(cfg ErrorPackageConfigInit) { ExtendGinOutput: ego, ExtendGinDataOutput: egdo, DisableErrorWrapping: langext.Coalesce(cfg.DisableErrorWrapping, pkgconfig.DisableErrorWrapping), + ZeroLogAllGinOutput: langext.Coalesce(cfg.ZeroLogAllGinOutput, pkgconfig.ZeroLogAllGinOutput), + ZeroLogErrGinOutput: langext.Coalesce(cfg.ZeroLogErrGinOutput, pkgconfig.ZeroLogErrGinOutput), } initialized = true diff --git a/ginext/response.go b/ginext/response.go index 52f0fc8..e3d9e98 100644 --- a/ginext/response.go +++ b/ginext/response.go @@ -1,6 +1,7 @@ package ginext import ( + "context" "fmt" "github.com/gin-gonic/gin" "gogs.mikescher.com/BlackForestBytes/goext/exerr" @@ -410,7 +411,8 @@ func (j jsonAPIErrResponse) Write(g *gin.Context) { for _, v := range j.cookies { g.SetCookie(v.name, v.value, v.maxAge, v.path, v.domain, v.secure, v.httpOnly) } - j.err.Output(g) + + exerr.Get(j.err).Output(context.Background(), g) j.err.CallListener(exerr.MethodOutput) } diff --git a/go.mod b/go.mod index 8980819..2064407 100644 --- a/go.mod +++ b/go.mod @@ -15,9 +15,11 @@ require ( ) require ( - github.com/bytedance/sonic v1.11.3 // indirect + github.com/bytedance/sonic v1.11.4 // indirect github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect github.com/chenzhuoyu/iasm v0.9.1 // indirect + github.com/cloudwego/base64x v0.1.0 // indirect + github.com/cloudwego/iasm v0.1.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect diff --git a/go.sum b/go.sum index fe7ffe7..51e74e5 100644 --- a/go.sum +++ b/go.sum @@ -10,6 +10,8 @@ github.com/bytedance/sonic v1.11.2 h1:ywfwo0a/3j9HR8wsYGWsIWl2mvRsI950HyoxiBERw5 github.com/bytedance/sonic v1.11.2/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= github.com/bytedance/sonic v1.11.3 h1:jRN+yEjakWh8aK5FzrciUHG8OFXK+4/KrAX/ysEtHAA= github.com/bytedance/sonic v1.11.3/go.mod h1:iZcSUejdk5aukTND/Eu/ivjQuEL0Cu9/rf50Hi0u/g4= +github.com/bytedance/sonic v1.11.4 h1:8+OMLSSDDm2/qJc6ld5K5Sm62NK9VHcUKk0NzBoMAM4= +github.com/bytedance/sonic v1.11.4/go.mod h1:YrWEqYtlBPS6LUA0vpuG79a1trsh4Ae41uWUWUreHhE= github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d h1:77cEq6EriyTZ0g/qfRdp61a3Uu/AWrgIq2s0ClJV1g0= @@ -17,6 +19,11 @@ github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d/go.mod h1:8EPpV github.com/chenzhuoyu/iasm v0.9.0/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= github.com/chenzhuoyu/iasm v0.9.1 h1:tUHQJXo3NhBqw6s33wkGn9SP3bvrWLdlVIJ3hQBL7P0= github.com/chenzhuoyu/iasm v0.9.1/go.mod h1:Xjy2NpN3h7aUqeqM+woSuuvxmIe6+DDsiNLIrkAmYog= +github.com/cloudwego/base64x v0.1.0 h1:Tg5q9tq1khq9Y9UwfoC6zkHK0FypN2GLDvhqFceOL8U= +github.com/cloudwego/base64x v0.1.0/go.mod h1:lM8nFiNbg74QgesNo6EAtv8N9tlRjBWExmHoNDa3PkU= +github.com/cloudwego/iasm v0.0.9/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cloudwego/iasm v0.1.0 h1:q0OuhwWDMyi3nlrQ6kIr0Yx0c3FI6cq/OZWKodIDdz8= +github.com/cloudwego/iasm v0.1.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= diff --git a/goextVersion.go b/goextVersion.go index dea3332..d0e5efb 100644 --- a/goextVersion.go +++ b/goextVersion.go @@ -1,5 +1,5 @@ package goext -const GoextVersion = "0.0.432" +const GoextVersion = "0.0.433" -const GoextVersionTimestamp = "2024-04-13T22:08:45+0200" +const GoextVersionTimestamp = "2024-04-15T10:25:30+0200"