func logPanicToWriter(w io.Writer, loggedError error) { fmt.Fprintf(w, "> %s", filepath.Base(os.Args[0])) if len(os.Args) > 0 { fmt.Fprintf(w, " %s", strings.Join(os.Args[1:], " ")) } fmt.Fprintln(w) logEnv(w) fmt.Fprintln(w) w.Write(ErrorBuffer.Bytes()) fmt.Fprintln(w) fmt.Fprintln(w, loggedError.Error()) if wErr, ok := loggedError.(ErrorWithStack); ok { fmt.Fprintln(w, wErr.InnerError()) for key, value := range wErr.Context() { fmt.Fprintf(w, "%s=%s\n", key, value) } w.Write(wErr.Stack()) } else { w.Write(lfs.Stack()) } }
func logPanicToWriter(w io.Writer, loggedError error) { // log the version gitV, err := git.Config.Version() if err != nil { gitV = "Error getting git version: " + err.Error() } fmt.Fprintln(w, lfs.UserAgent) fmt.Fprintln(w, gitV) // log the command that was run fmt.Fprintln(w) fmt.Fprintf(w, "$ %s", filepath.Base(os.Args[0])) if len(os.Args) > 0 { fmt.Fprintf(w, " %s", strings.Join(os.Args[1:], " ")) } fmt.Fprintln(w) // log the error message and stack trace w.Write(ErrorBuffer.Bytes()) fmt.Fprintln(w) fmt.Fprintln(w, loggedError.Error()) if err, ok := loggedError.(ErrorWithStack); ok { fmt.Fprintln(w, err.InnerError()) for key, value := range err.Context() { fmt.Fprintf(w, "%s=%s\n", key, value) } w.Write(err.Stack()) } else { w.Write(lfs.Stack()) } fmt.Fprintln(w, "\nENV:") // log the environment for _, env := range lfs.Environ() { fmt.Fprintln(w, env) } }