1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-06-15 00:15:32 +02:00

Log duration of commands

This will help us diagnose performance issues
This commit is contained in:
Jesse Duffield
2023-07-29 09:31:42 +10:00
parent 09ce430240
commit 71cab4fadc

View File

@ -6,6 +6,7 @@ import (
"io" "io"
"regexp" "regexp"
"strings" "strings"
"time"
"github.com/go-errors/errors" "github.com/go-errors/errors"
"github.com/jesseduffield/gocui" "github.com/jesseduffield/gocui"
@ -102,10 +103,14 @@ func (self *cmdObjRunner) RunWithOutputAux(cmdObj ICmdObj) (string, error) {
self.logCmdObj(cmdObj) self.logCmdObj(cmdObj)
} }
t := time.Now()
output, err := sanitisedCommandOutput(cmdObj.GetCmd().CombinedOutput()) output, err := sanitisedCommandOutput(cmdObj.GetCmd().CombinedOutput())
if err != nil { if err != nil {
self.log.WithField("command", cmdObj.ToString()).Error(output) self.log.WithField("command", cmdObj.ToString()).Error(output)
} }
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
return output, err return output, err
} }
@ -116,12 +121,15 @@ func (self *cmdObjRunner) RunWithOutputsAux(cmdObj ICmdObj) (string, string, err
self.logCmdObj(cmdObj) self.logCmdObj(cmdObj)
} }
t := time.Now()
var outBuffer, errBuffer bytes.Buffer var outBuffer, errBuffer bytes.Buffer
cmd := cmdObj.GetCmd() cmd := cmdObj.GetCmd()
cmd.Stdout = &outBuffer cmd.Stdout = &outBuffer
cmd.Stderr = &errBuffer cmd.Stderr = &errBuffer
err := cmd.Run() err := cmd.Run()
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
stdout := outBuffer.String() stdout := outBuffer.String()
stderr, err := sanitisedCommandOutput(errBuffer.Bytes(), err) stderr, err := sanitisedCommandOutput(errBuffer.Bytes(), err)
if err != nil { if err != nil {
@ -144,6 +152,7 @@ func (self *cmdObjRunner) RunAndProcessLines(cmdObj ICmdObj, onLine func(line st
if cmdObj.ShouldLog() { if cmdObj.ShouldLog() {
self.logCmdObj(cmdObj) self.logCmdObj(cmdObj)
} }
t := time.Now()
cmd := cmdObj.GetCmd() cmd := cmdObj.GetCmd()
stdoutPipe, err := cmd.StdoutPipe() stdoutPipe, err := cmd.StdoutPipe()
@ -171,6 +180,8 @@ func (self *cmdObjRunner) RunAndProcessLines(cmdObj ICmdObj, onLine func(line st
_ = cmd.Wait() _ = cmd.Wait()
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
return nil return nil
} }
@ -237,9 +248,14 @@ func (self *cmdObjRunner) runAndStreamAux(
} }
}() }()
t := time.Now()
onRun(handler, cmdWriter) onRun(handler, cmdWriter)
err = cmd.Wait() err = cmd.Wait()
self.log.Infof("%s (%s)", cmdObj.ToString(), time.Since(t))
if err != nil { if err != nil {
errStr := stderr.String() errStr := stderr.String()
if errStr != "" { if errStr != "" {