Fix RUST_LOG envar for netavark

THe rust netlink library is very verbose. It contains way to much debug
and trave logs. We can set `RUST_LOG=netavark=<level>` to make sure this
log level only applies to netavark and not the libraries.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
This commit is contained in:
Paul Holzinger
2021-10-28 20:04:33 +02:00
parent 4febe55769
commit 3fe0c49174

View File

@ -45,6 +45,18 @@ func newNetavarkError(msg string, err error) error {
}
}
// getRustLogEnv returns the RUST_LOG env var based on the current logrus level
func getRustLogEnv() string {
level := logrus.GetLevel().String()
// rust env_log uses warn instead of warning
if level == "warning" {
level = "warn"
}
// the rust netlink library is very verbose
// make sure to only log netavark logs
return "RUST_LOG=netavark=" + level
}
// execNetavark will execute netavark with the following arguments
// It takes the path to the binary, the list of args and an interface which is
// marshaled to json and send via stdin to netavark. The result interface is
@ -72,7 +84,7 @@ func execNetavark(binary string, args []string, stdin, result interface{}) error
// connect stderr to the podman stderr for logging
cmd.Stderr = os.Stderr
// set the netavark log level to the same as the podman
cmd.Env = append(os.Environ(), "RUST_LOG="+logrus.GetLevel().String())
cmd.Env = append(os.Environ(), getRustLogEnv())
// if we run with debug log level lets also set RUST_BACKTRACE=1 so we can get the full stack trace in case of panics
if logrus.IsLevelEnabled(logrus.DebugLevel) {
cmd.Env = append(cmd.Env, "RUST_BACKTRACE=1")