# HG changeset patch
# User Christophe de Vienne <christophe@cdevienne.info>
# Date 1639388433 -3600
#      Mon Dec 13 10:40:33 2021 +0100
# Node ID d907e7ba03837e8b0112b27ad59981740c06f034
# Parent  2defe6a5a126875beea9790225e82d2b802e01ab
panic handler: better report of errors

Handling specifically the recovers when they implement the 'error' interface should
give us a better 'value' field in the log message.

diff --git a/panic_middleware.go b/panic_middleware.go
--- a/panic_middleware.go
+++ b/panic_middleware.go
@@ -18,9 +18,12 @@
 				log := zerolog.Ctx(req.Context())
 
 				exc := zerolog.Dict().
-					Str("value", fmt.Sprintf("%#v", r)).
 					Str("type", fmt.Sprintf("%T", r))
-
+				if err, ok := r.(error); ok {
+					exc = exc.AnErr("value", err)
+				} else {
+					exc = exc.Str("value", fmt.Sprintf("%#v", r))
+				}
 				stack := sentry.NewStacktrace()
 				stack.Frames = stack.Frames[:len(stack.Frames)-1]
 				b, err := jsoniter.Marshal(stack)