Merge pull request #671 from thockin/v3_log_command_depth

v3: Log commands we run with original caller
This commit is contained in:
Kubernetes Prow Robot 2023-02-11 00:59:30 -08:00 committed by GitHub
commit 05a43a5fd4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 5 deletions

View File

@ -23,29 +23,36 @@ import (
"os/exec" "os/exec"
"strings" "strings"
"github.com/go-logr/logr"
"k8s.io/git-sync/pkg/logging" "k8s.io/git-sync/pkg/logging"
) )
// Runner structure // Runner structure
type Runner struct { type Runner struct {
// Logger // Logger
logger *logging.Logger logger logr.Logger
} }
// NewRunner returns a new CommandRunner // NewRunner returns a new CommandRunner
func NewRunner(logger *logging.Logger) *Runner { func NewRunner(logger *logging.Logger) *Runner {
return &Runner{logger: logger} return &Runner{logger: logger.V(0)}
} }
// Run runs given command // Run runs given command
func (c *Runner) Run(ctx context.Context, cwd string, env []string, command string, args ...string) (string, error) { func (c *Runner) Run(ctx context.Context, cwd string, env []string, command string, args ...string) (string, error) {
return c.RunWithStdin(ctx, cwd, env, "", command, args...) // call depth = 2 to erase the runWithStdin frame and this one
return runWithStdin(ctx, c.logger.WithCallDepth(2), cwd, env, "", command, args...)
} }
// RunWithStdin runs given command with stardart input // RunWithStdin runs given command with stardart input
func (c *Runner) RunWithStdin(ctx context.Context, cwd string, env []string, stdin, command string, args ...string) (string, error) { func (c *Runner) RunWithStdin(ctx context.Context, cwd string, env []string, stdin, command string, args ...string) (string, error) {
// call depth = 2 to erase the runWithStdin frame and this one
return runWithStdin(ctx, c.logger.WithCallDepth(2), cwd, env, stdin, command, args...)
}
func runWithStdin(ctx context.Context, log logr.Logger, cwd string, env []string, stdin, command string, args ...string) (string, error) {
cmdStr := cmdForLog(command, args...) cmdStr := cmdForLog(command, args...)
c.logger.V(5).Info("running command", "cwd", cwd, "cmd", cmdStr) log.V(5).Info("running command", "cwd", cwd, "cmd", cmdStr)
cmd := exec.CommandContext(ctx, command, args...) cmd := exec.CommandContext(ctx, command, args...)
if cwd != "" { if cwd != "" {
@ -69,7 +76,7 @@ func (c *Runner) RunWithStdin(ctx context.Context, cwd string, env []string, std
if err != nil { if err != nil {
return "", fmt.Errorf("Run(%s): %w: { stdout: %q, stderr: %q }", cmdStr, err, stdout, stderr) return "", fmt.Errorf("Run(%s): %w: { stdout: %q, stderr: %q }", cmdStr, err, stdout, stderr)
} }
c.logger.V(6).Info("command result", "stdout", stdout, "stderr", stderr) log.V(6).Info("command result", "stdout", stdout, "stderr", stderr)
return stdout, nil return stdout, nil
} }