From 4c2c7bb28fc0e50b7f3ecb4cb3a37e86e403d899 Mon Sep 17 00:00:00 2001 From: Brent Baude Date: Mon, 15 Jan 2024 13:11:54 -0600 Subject: [PATCH] Add --log-file to gvproxy Add ability specify a log-file for log messages. This PR redirects are logged messages from the logrus logger to a given file. It is intended to help debug gvproxy failures and usage. Signed-off-by: Brent Baude --- cmd/gvproxy/main.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/cmd/gvproxy/main.go b/cmd/gvproxy/main.go index cc5a5187d..8e534a25f 100644 --- a/cmd/gvproxy/main.go +++ b/cmd/gvproxy/main.go @@ -45,6 +45,7 @@ var ( sshPort int pidFile string exitCode int + logFile string ) const ( @@ -72,6 +73,7 @@ func main() { flag.Var(&forwardUser, "forward-user", "SSH user to use for unix socket forward") flag.Var(&forwardIdentify, "forward-identity", "Path to SSH identity key for forwarding") flag.StringVar(&pidFile, "pid-file", "", "Generate a file with the PID in it") + flag.StringVar(&logFile, "log-file", "", "Output log messages (logrus) to a given file path") flag.Parse() if version.ShowVersion() { @@ -79,6 +81,22 @@ func main() { os.Exit(0) } + // If the user provides a log-file, we re-direct log messages + // from logrus to the file + if logFile != "" { + lf, err := os.Create(logFile) + if err != nil { + fmt.Printf("unable to open log file %s, exiting...\n", logFile) + os.Exit(1) + } + defer func() { + if err := lf.Close(); err != nil { + fmt.Printf("unable to close log-file: %q\n", err) + } + }() + log.SetOutput(lf) + } + log.Infof(version.String()) ctx, cancel := context.WithCancel(context.Background()) // Make this the last defer statement in the stack