@@ -13,31 +13,59 @@ func DefaultFormatFn(s fmt.State, verb rune, e Errors) {
13
13
case 'v' :
14
14
switch {
15
15
case s .Flag ('+' ):
16
- fmt .Fprintf (s , "%s\n " , e .Error ())
16
+ _ , _ = fmt .Fprintf (s , "- %s\n " , e .Error ())
17
17
for i , pc := range e .PCS () {
18
18
fn := runtime .FuncForPC (pc )
19
19
if fn == nil {
20
- io .WriteString (s , "unknown" )
20
+ _ , _ = io .WriteString (s , "unknown" )
21
21
} else {
22
22
file , line := fn .FileLine (pc )
23
23
home , filename := fileName (file )
24
24
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 )
26
26
} 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 )
28
28
}
29
29
}
30
30
}
31
31
if e .Cause () != nil {
32
32
hasCause , ok := e .Cause ().(Errors )
33
33
if ! ok {
34
- fmt .Fprintf (s , "%v\n " , e .Cause ())
34
+ _ , _ = fmt .Fprintf (s , "%v\n " , e .Cause ())
35
35
} else {
36
36
hasCause .Format (s , verb )
37
37
}
38
38
}
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 , "}" )
39
67
default :
40
- fmt .Fprintf (s , "%s" , e .Error ())
68
+ _ , _ = fmt .Fprintf (s , "%s" , e .Error ())
41
69
}
42
70
}
43
71
}
0 commit comments