11package assert
22
33import (
4- "encoding/base64"
54 "fmt"
65 "log/slog"
76 "reflect"
@@ -14,6 +13,7 @@ import (
1413 "google.golang.org/protobuf/proto"
1514
1615 "github.com/pubgo/funk/log/logfields"
16+ "github.com/pubgo/funk/stack"
1717)
1818
1919func messageFromMsgAndArgs (msgAndArgs ... any ) string {
@@ -30,15 +30,20 @@ func messageFromMsgAndArgs(msgAndArgs ...any) string {
3030 return pretty ().Sprint (msgAndArgs ... )
3131}
3232
33+ var assetFile = stack .Caller (0 )
34+
3335func logErr (err error , message string , attrs ... slog.Attr ) {
3436 if err == nil {
3537 return
3638 }
3739
40+ traces := lo .Filter (stack .Trace (), func (item * stack.Frame , index int ) bool {
41+ return ! item .IsRuntime () && item .Pkg != assetFile .Pkg
42+ })
3843 attrs = append (attrs ,
3944 slog .String (logfields .Module , "assert" ),
4045 slog .String (logfields .Error , err .Error ()),
41- slog .String (logfields .ErrorStack , base64 . StdEncoding . EncodeToString ( debug . Stack () )),
46+ slog .Any (logfields .ErrorStack , lo . Map ( traces , func ( item * stack. Frame , index int ) string { return item . String () } )),
4247 slog .String (logfields .ErrorDetail , fmt .Sprintf ("%v" , err )),
4348 )
4449 slog .Error (message , lo .ToAnySlice (attrs )... )
0 commit comments