Skip setting of log file for --version flag

Signed-off-by: Evan Lezar <elezar@nvidia.com>
This commit is contained in:
Evan Lezar 2022-05-12 12:05:55 +02:00
parent bdb43aa8f2
commit 19138a2110
2 changed files with 45 additions and 28 deletions

View File

@ -49,7 +49,10 @@ func UpdateLogger(filename string, logLevel string, argv []string) (*Logger, err
level, logLevelError := configFromArgs.getLevel(logLevel) level, logLevelError := configFromArgs.getLevel(logLevel)
var logFiles []*os.File var logFiles []*os.File
var argLogFileError error
// We don't create log files if the version argument is supplied
if !configFromArgs.version {
configLogFile, err := createLogFile(filename) configLogFile, err := createLogFile(filename)
if err != nil { if err != nil {
return logger, fmt.Errorf("error opening debug log file: %v", err) return logger, fmt.Errorf("error opening debug log file: %v", err)
@ -58,10 +61,12 @@ func UpdateLogger(filename string, logLevel string, argv []string) (*Logger, err
logFiles = append(logFiles, configLogFile) logFiles = append(logFiles, configLogFile)
} }
argLogFile, argLogFileError := createLogFile(configFromArgs.file) argLogFile, err := createLogFile(configFromArgs.file)
if argLogFile != nil { if argLogFile != nil {
logFiles = append(logFiles, argLogFile) logFiles = append(logFiles, argLogFile)
} }
argLogFileError = err
}
l := &Logger{ l := &Logger{
Logger: logrus.New(), Logger: logrus.New(),
@ -69,18 +74,6 @@ func UpdateLogger(filename string, logLevel string, argv []string) (*Logger, err
logFiles: logFiles, logFiles: logFiles,
} }
if len(logFiles) == 0 {
l.SetOutput(io.Discard)
} else if len(logFiles) == 1 {
l.SetOutput(logFiles[0])
} else {
var writers []io.Writer
for _, f := range logFiles {
writers = append(writers, f)
}
l.SetOutput(io.MultiWriter(writers...))
}
l.SetLevel(level) l.SetLevel(level)
if level == logrus.DebugLevel { if level == logrus.DebugLevel {
logrus.SetReportCaller(true) logrus.SetReportCaller(true)
@ -102,6 +95,18 @@ func UpdateLogger(filename string, logLevel string, argv []string) (*Logger, err
l.SetFormatter(new(logrus.JSONFormatter)) l.SetFormatter(new(logrus.JSONFormatter))
} }
if len(logFiles) == 0 {
l.SetOutput(io.Discard)
} else if len(logFiles) == 1 {
l.SetOutput(logFiles[0])
} else if len(logFiles) > 1 {
var writers []io.Writer
for _, f := range logFiles {
writers = append(writers, f)
}
l.SetOutput(io.MultiWriter(writers...))
}
if logLevelError != nil { if logLevelError != nil {
l.Warn(logLevelError) l.Warn(logLevelError)
} }
@ -156,6 +161,7 @@ type loggerConfig struct {
file string file string
format string format string
debug bool debug bool
version bool
} }
func (c loggerConfig) getLevel(logLevel string) (logrus.Level, error) { func (c loggerConfig) getLevel(logLevel string) (logrus.Level, error) {
@ -182,15 +188,24 @@ func parseArgs(args []string) loggerConfig {
found := make(map[string]bool) found := make(map[string]bool)
for i := 0; i < len(args); i++ { for i := 0; i < len(args); i++ {
if len(found) == 3 { if len(found) == 4 {
break break
} }
param := args[i] param := args[i]
parts := strings.SplitN(param, "=", 2) parts := strings.SplitN(param, "=", 2)
trimmed := strings.TrimPrefix(parts[0], "--") trimmed := strings.TrimLeft(parts[0], "-")
if !strings.HasPrefix(parts[0], "--") { // If this is not a flag we continue
if parts[0] == trimmed {
continue
}
// Check the version flag
if trimmed == "version" {
c.version = true
found["version"] = true
// For the version flag we don't process any other flags
continue continue
} }

View File

@ -7,6 +7,8 @@ import (
"github.com/NVIDIA/nvidia-container-toolkit/internal/config" "github.com/NVIDIA/nvidia-container-toolkit/internal/config"
) )
var Version string
var logger = NewLogger() var logger = NewLogger()
func main() { func main() {