@@ -13,31 +13,59 @@ func DefaultFormatFn(s fmt.State, verb rune, e Errors) {
1313 case 'v' :
1414 switch {
1515 case s .Flag ('+' ):
16- fmt .Fprintf (s , "%s\n " , e .Error ())
16+ _ , _ = fmt .Fprintf (s , "- %s\n " , e .Error ())
1717 for i , pc := range e .PCS () {
1818 fn := runtime .FuncForPC (pc )
1919 if fn == nil {
20- io .WriteString (s , "unknown" )
20+ _ , _ = io .WriteString (s , "unknown" )
2121 } else {
2222 file , line := fn .FileLine (pc )
2323 home , filename := fileName (file )
2424 if i == 0 {
25- fmt .Fprintf (s , "\t [T] %s\n \t [F] %s\n \t [H] %s\n \t [F] %s:%d \n " , e .OccurTime ().String (), fn .Name (), home , filename , line )
25+ _ , _ = fmt .Fprintf (s , "\t [T] %s\n \t [F] %s\n \t [H] %s\n \t [F] %s:%d \n " , e .OccurTime ().String (), fn .Name (), home , filename , line )
2626 } else {
27- fmt .Fprintf (s , "\t [F] %s\n \t [H] %s\n \t [F] %s:%d \n " , fn .Name (), home , filename , line )
27+ _ , _ = fmt .Fprintf (s , "\t [F] %s\n \t [H] %s\n \t [F] %s:%d \n " , fn .Name (), home , filename , line )
2828 }
2929 }
3030 }
3131 if e .Cause () != nil {
3232 hasCause , ok := e .Cause ().(Errors )
3333 if ! ok {
34- fmt .Fprintf (s , "%v\n " , e .Cause ())
34+ _ , _ = fmt .Fprintf (s , "%v\n " , e .Cause ())
3535 } else {
3636 hasCause .Format (s , verb )
3737 }
3838 }
39+ case s .Flag ('-' ):
40+ _ , _ = io .WriteString (s , "{" )
41+ _ , _ = fmt .Fprintf (s , `"msg":"%s", "occurTime":"%s", "stack":[` , e .Error (), e .OccurTime ())
42+ for i , pc := range e .PCS () {
43+ if i > 0 {
44+ _ , _ = io .WriteString (s , "," )
45+ }
46+ fn := runtime .FuncForPC (pc )
47+ if fn == nil {
48+ _ , _ = fmt .Fprintf (s , `{"fn":"%s", "home":"%s", "file":"%s", "line":%d}` , "unknown" , "unknown" , "unknown" , 0 )
49+ } else {
50+ file , line := fn .FileLine (pc )
51+ home , filename := fileName (file )
52+ _ , _ = fmt .Fprintf (s , `{"fn":"%s", "home":"%s", "file":"%s", "line":%d}` , fn .Name (), home , filename , line )
53+ }
54+ }
55+ _ , _ = io .WriteString (s , "]" )
56+ if e .Cause () != nil {
57+ _ , _ = io .WriteString (s , "," )
58+ hasCause , ok := e .Cause ().(Errors )
59+ if ! ok {
60+ _ , _ = fmt .Fprintf (s , `"cause":{"msg":"%s"}` , e .Cause ().Error ())
61+ } else {
62+ _ , _ = io .WriteString (s , `"cause":` )
63+ hasCause .Format (s , verb )
64+ }
65+ }
66+ _ , _ = io .WriteString (s , "}" )
3967 default :
40- fmt .Fprintf (s , "%s" , e .Error ())
68+ _ , _ = fmt .Fprintf (s , "%s" , e .Error ())
4169 }
4270 }
4371}
0 commit comments