summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2021-04-15 09:08:37 -0400
committerGitHub <noreply@github.com>2021-04-15 09:08:37 -0400
commit405331ff9072e6febed123aafdc365517917ab44 (patch)
tree0e965ca02fe57c2c0110d17c46dcdbd7ab68aebf
parentb2a3bb4a6180b390c87565c49798990384f16976 (diff)
parentbc86c50cd81bc3267ec8b9840e1a0e705231f336 (diff)
downloadpodman-405331ff9072e6febed123aafdc365517917ab44.tar.gz
podman-405331ff9072e6febed123aafdc365517917ab44.tar.bz2
podman-405331ff9072e6febed123aafdc365517917ab44.zip
Merge pull request #10032 from nalind/trace-level
Recognize "trace" logging, and use it for lone errors at exit
-rw-r--r--cmd/podman/common/completion.go4
-rw-r--r--cmd/podman/root.go6
-rw-r--r--pkg/errorhandling/errorhandling.go3
-rw-r--r--test/system/001-basic.bats13
4 files changed, 23 insertions, 3 deletions
diff --git a/cmd/podman/common/completion.go b/cmd/podman/common/completion.go
index d110fb1b5..6086df297 100644
--- a/cmd/podman/common/completion.go
+++ b/cmd/podman/common/completion.go
@@ -21,7 +21,7 @@ var (
// ChangeCmds is the list of valid Change commands to passed to the Commit call
ChangeCmds = []string{"CMD", "ENTRYPOINT", "ENV", "EXPOSE", "LABEL", "ONBUILD", "STOPSIGNAL", "USER", "VOLUME", "WORKDIR"}
// LogLevels supported by podman
- LogLevels = []string{"debug", "info", "warn", "warning", "error", "fatal", "panic"}
+ LogLevels = []string{"trace", "debug", "info", "warn", "warning", "error", "fatal", "panic"}
)
type completeType int
@@ -1009,7 +1009,7 @@ func AutocompleteEventBackend(cmd *cobra.Command, args []string, toComplete stri
}
// AutocompleteLogLevel - Autocomplete log level options.
-// -> "debug", "info", "warn", "error", "fatal", "panic"
+// -> "trace", "debug", "info", "warn", "error", "fatal", "panic"
func AutocompleteLogLevel(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
return LogLevels, cobra.ShellCompDirectiveNoFileComp
}
diff --git a/cmd/podman/root.go b/cmd/podman/root.go
index 4527c2646..9e5d2a236 100644
--- a/cmd/podman/root.go
+++ b/cmd/podman/root.go
@@ -416,7 +416,11 @@ func formatError(err error) string {
strings.TrimSuffix(err.Error(), ": "+define.ErrOCIRuntime.Error()),
)
} else {
- message = "Error: " + err.Error()
+ if logrus.IsLevelEnabled(logrus.TraceLevel) {
+ message = fmt.Sprintf("Error: %+v", err)
+ } else {
+ message = fmt.Sprintf("Error: %v", err)
+ }
}
return message
}
diff --git a/pkg/errorhandling/errorhandling.go b/pkg/errorhandling/errorhandling.go
index b1923be98..9dc545ebb 100644
--- a/pkg/errorhandling/errorhandling.go
+++ b/pkg/errorhandling/errorhandling.go
@@ -24,6 +24,9 @@ func JoinErrors(errs []error) error {
if finalErr == nil {
return finalErr
}
+ if len(multiE.WrappedErrors()) == 1 && logrus.IsLevelEnabled(logrus.TraceLevel) {
+ return multiE.WrappedErrors()[0]
+ }
return errors.New(strings.TrimSpace(finalErr.Error()))
}
diff --git a/test/system/001-basic.bats b/test/system/001-basic.bats
index 081bb1171..35107f0a0 100644
--- a/test/system/001-basic.bats
+++ b/test/system/001-basic.bats
@@ -111,4 +111,17 @@ function setup() {
is "$output" "you found me" "sample invocation of 'jq'"
}
+@test "podman --log-level recognizes log levels" {
+ run_podman 1 --log-level=telepathic info
+ is "$output" 'Log Level "telepathic" is not supported.*'
+ run_podman --log-level=trace info
+ run_podman --log-level=debug info
+ run_podman --log-level=info info
+ run_podman --log-level=warn info
+ run_podman --log-level=warning info
+ run_podman --log-level=error info
+ run_podman --log-level=fatal info
+ run_podman --log-level=panic info
+}
+
# vim: filetype=sh