diff --git a/controllers/awsmachine_controller.go b/controllers/awsmachine_controller.go index 5c86d3c234..e4725ee198 100644 --- a/controllers/awsmachine_controller.go +++ b/controllers/awsmachine_controller.go @@ -321,7 +321,7 @@ func (r *AWSMachineReconciler) reconcileDelete(machineScope *scope.MachineScope, // and AWSMachine // 3. Issue a delete // 4. Scale controller deployment to 1 - machineScope.Debug("Unable to locate EC2 instance by ID or tags") + machineScope.Warn("Unable to locate EC2 instance by ID or tags") r.Recorder.Eventf(machineScope.AWSMachine, corev1.EventTypeWarning, "NoInstanceFound", "Unable to find matching EC2 instance") controllerutil.RemoveFinalizer(machineScope.AWSMachine, infrav1.MachineFinalizer) return ctrl.Result{}, nil diff --git a/exp/controllers/awsmachinepool_controller.go b/exp/controllers/awsmachinepool_controller.go index 831276cad2..a3b2926480 100644 --- a/exp/controllers/awsmachinepool_controller.go +++ b/exp/controllers/awsmachinepool_controller.go @@ -345,7 +345,7 @@ func (r *AWSMachinePoolReconciler) reconcileDelete(machinePoolScope *scope.Machi } if asg == nil { - machinePoolScope.Debug("Unable to locate ASG") + machinePoolScope.Warn("Unable to locate ASG") r.Recorder.Eventf(machinePoolScope.AWSMachinePool, corev1.EventTypeNormal, expinfrav1.ASGNotFoundReason, "Unable to find matching ASG") } else { machinePoolScope.SetASGStatus(asg.Status) diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 00916a1511..c836553e54 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -23,10 +23,12 @@ import ( "github.com/go-logr/logr" ) +// These are the log levels used by the logger. +// See https://github.com/kubernetes/community/blob/master/contributors/devel/sig-instrumentation/logging.md#what-method-to-use const ( - logLevelDebug = 2 - logLevelWarn = 3 - logLevelTrace = 4 + logLevelWarn = 1 + logLevelDebug = 4 + logLevelTrace = 5 ) // Wrapper defines a convenient interface to use to log things. @@ -43,43 +45,52 @@ type Wrapper interface { // Logger is a concrete logger using logr underneath. type Logger struct { - logger logr.Logger + callStackHelper func() + logger logr.Logger } // NewLogger creates a logger with a passed in logr.Logger implementation directly. func NewLogger(log logr.Logger) *Logger { + helper, log := log.WithCallStackHelper() return &Logger{ - logger: log, + callStackHelper: helper, + logger: log, } } // FromContext retrieves the logr implementation from Context and uses it as underlying logger. func FromContext(ctx context.Context) *Logger { - log := logr.FromContextOrDiscard(ctx) + helper, log := logr.FromContextOrDiscard(ctx).WithCallStackHelper() return &Logger{ - logger: log, + callStackHelper: helper, + logger: log, } } var _ Wrapper = &Logger{} func (c *Logger) Info(msg string, keysAndValues ...any) { + c.callStackHelper() c.logger.Info(msg, keysAndValues...) } func (c *Logger) Debug(msg string, keysAndValues ...any) { + c.callStackHelper() c.logger.V(logLevelDebug).Info(msg, keysAndValues...) } func (c *Logger) Warn(msg string, keysAndValues ...any) { + c.callStackHelper() c.logger.V(logLevelWarn).Info(msg, keysAndValues...) } func (c *Logger) Trace(msg string, keysAndValues ...any) { + c.callStackHelper() c.logger.V(logLevelTrace).Info(msg, keysAndValues...) } func (c *Logger) Error(err error, msg string, keysAndValues ...any) { + c.callStackHelper() c.logger.Error(err, msg, keysAndValues...) }