diff options
Diffstat (limited to 'service/service_tunnel.go')
-rw-r--r-- | service/service_tunnel.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/service/service_tunnel.go b/service/service_tunnel.go index 11234960..2d66bf32 100644 --- a/service/service_tunnel.go +++ b/service/service_tunnel.go @@ -105,8 +105,19 @@ func (service *tunnelService) Execute(args []string, r <-chan svc.ChangeRequest, return } defer func() { + logIt := func(a ...interface{}) { + if logger != nil { + logger.Error.Println(a...) + } else { + log.Println(a...) + } + } if x := recover(); x != nil { - log.Printf("%v:\n%s", x, string(debug.Stack())) + for _, line := range append([]string{fmt.Sprint(x)}, strings.Split(string(debug.Stack()), "\n")...) { + if len(strings.TrimSpace(line)) > 0 { + logIt(line) + } + } panic(x) } }() |