2026-02-01 15:55:26 +00:00
|
|
|
package exec
|
|
|
|
|
|
|
|
|
|
// Logger interface for command execution logging.
|
|
|
|
|
// Compatible with pkg/log.Logger and other structured loggers.
|
|
|
|
|
type Logger interface {
|
2026-02-01 16:12:01 +00:00
|
|
|
// Debug logs a debug-level message with optional key-value pairs.
|
2026-02-01 15:55:26 +00:00
|
|
|
Debug(msg string, keyvals ...any)
|
2026-02-01 16:12:01 +00:00
|
|
|
// Error logs an error-level message with optional key-value pairs.
|
2026-02-01 15:55:26 +00:00
|
|
|
Error(msg string, keyvals ...any)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// NopLogger is a no-op logger that discards all messages.
|
|
|
|
|
type NopLogger struct{}
|
|
|
|
|
|
2026-02-01 16:12:01 +00:00
|
|
|
// Debug discards the message (no-op implementation).
|
2026-02-01 15:55:26 +00:00
|
|
|
func (NopLogger) Debug(string, ...any) {}
|
2026-02-01 16:12:01 +00:00
|
|
|
|
|
|
|
|
// Error discards the message (no-op implementation).
|
2026-02-01 15:55:26 +00:00
|
|
|
func (NopLogger) Error(string, ...any) {}
|
|
|
|
|
|
|
|
|
|
var defaultLogger Logger = NopLogger{}
|
|
|
|
|
|
|
|
|
|
// SetDefaultLogger sets the package-level default logger.
|
|
|
|
|
// Commands without an explicit logger will use this.
|
|
|
|
|
func SetDefaultLogger(l Logger) {
|
|
|
|
|
if l == nil {
|
|
|
|
|
l = NopLogger{}
|
|
|
|
|
}
|
|
|
|
|
defaultLogger = l
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// DefaultLogger returns the current default logger.
|
|
|
|
|
func DefaultLogger() Logger {
|
|
|
|
|
return defaultLogger
|
|
|
|
|
}
|