I noticed this in a ticket in the compose issue tracker; with debug logging
enabled, the OTEL error-logger may be logging even if there's no error;
DEBU[0000] Executing bake with args: [bake --file - --progress rawjson --metadata-file /tmp/compose-build-metadataFile-1203980021.json --allow fs.read=/home/user/dev/project --allow fs.read=/home/user/dev/project --allow fs.read=/home/user/dev/project/nginx --allow fs.read=/home/user/dev/project]
TRAC[0000] Plugin server listening on @docker_cli_d8df486f78df3b7357995be71bf0cef6
DEBU[0005] otel error error="<nil>"
^CTRAC[0055] Closing plugin server
TRAC[0055] Closing plugin server
DEBU[0055] otel error error="<nil>"
DEBU[0055] otel error error="<nil>"
Update the error-handler to not log if there's no error.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
41 lines
934 B
Go
41 lines
934 B
Go
package debug
|
|
|
|
import (
|
|
"os"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
"go.opentelemetry.io/otel"
|
|
)
|
|
|
|
// Enable sets the DEBUG env var to true
|
|
// and makes the logger to log at debug level.
|
|
func Enable() {
|
|
_ = os.Setenv("DEBUG", "1")
|
|
logrus.SetLevel(logrus.DebugLevel)
|
|
}
|
|
|
|
// Disable sets the DEBUG env var to false
|
|
// and makes the logger to log at info level.
|
|
func Disable() {
|
|
_ = os.Setenv("DEBUG", "")
|
|
logrus.SetLevel(logrus.InfoLevel)
|
|
}
|
|
|
|
// IsEnabled checks whether the debug flag is set or not.
|
|
func IsEnabled() bool {
|
|
return os.Getenv("DEBUG") != ""
|
|
}
|
|
|
|
// OTELErrorHandler is an error handler for OTEL that
|
|
// uses the CLI debug package to log messages when an error
|
|
// occurs.
|
|
//
|
|
// The default is to log to the debug level which is only
|
|
// enabled when debugging is enabled.
|
|
var OTELErrorHandler otel.ErrorHandler = otel.ErrorHandlerFunc(func(err error) {
|
|
if err == nil {
|
|
return
|
|
}
|
|
logrus.WithError(err).Debug("otel error")
|
|
})
|