diff --git a/cmd/rook/rook.go b/cmd/rook/rook.go index 5b089ba00..f6518ab2f 100644 --- a/cmd/rook/rook.go +++ b/cmd/rook/rook.go @@ -16,12 +16,12 @@ var ( ) const ( - systemLogDir = "/var/log/rook" + debugLogVar = "ROOK_DEBUG_DIR" + logFileName = "rook.log" outputPadding = 3 outputMinWidth = 10 outputTabWidth = 0 outputPadChar = ' ' - logFileName = "rook.log" ) var rootCmd = &cobra.Command{ @@ -31,17 +31,7 @@ var rootCmd = &cobra.Command{ } func Main() { - // set up logging to a log file instead of stdout (only command output and errors should go to stdout/stderr) - if err := os.MkdirAll(systemLogDir, 0744); err != nil { - log.Fatalf("failed to create logging dir '%s': %+v", systemLogDir, err) - } - logFilePath := filepath.Join(systemLogDir, logFileName) - logFile, err := os.OpenFile(logFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644) - if err != nil { - log.Fatalf("failed to open log file '%s': %v", logFilePath, err) - } - defer logFile.Close() - log.SetOutput(logFile) + enableLogging() addCommands() if err := rootCmd.Execute(); err != nil { @@ -67,3 +57,22 @@ func addCommands() { func NewTableWriter(buffer io.Writer) *tabwriter.Writer { return tabwriter.NewWriter(buffer, outputMinWidth, outputTabWidth, outputPadding, outputPadChar, 0) } + +func enableLogging() { + debugDir := os.Getenv(debugLogVar) + if debugDir == "" { + return + } + + // set up logging to a log file instead of stdout (only command output and errors should go to stdout/stderr) + if err := os.MkdirAll(debugDir, 0744); err != nil { + log.Fatalf("failed to create logging dir '%s': %+v", debugDir, err) + } + logFilePath := filepath.Join(debugDir, logFileName) + logFile, err := os.OpenFile(logFilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644) + if err != nil { + log.Fatalf("failed to open log file '%s': %v", logFilePath, err) + } + defer logFile.Close() + log.SetOutput(logFile) +}