📋 Logger
The cpeskills package exposes a structured-logging interface (Logger) with a built-in DefaultLogger, a package-level global logger, and convenience top-level functions. The interface is compatible with Go's log/slog and free of external dependencies.
Type: LogLevel
type LogLevel intRepresents the severity of a log message.
Constants
| Constant | Type | Value | Description |
|---|---|---|---|
LogLevelDebug | LogLevel | 0 (iota) | Detailed debug information |
LogLevelInfo | LogLevel | 1 | Informational messages |
LogLevelWarn | LogLevel | 2 | Warning messages |
LogLevelError | LogLevel | 3 | Error messages |
LogLevelOff | LogLevel | 4 | Disables all logging |
_ = cpeskills.LogLevelDebug
_ = cpeskills.LogLevelInfo
_ = cpeskills.LogLevelWarn
_ = cpeskills.LogLevelError
_ = cpeskills.LogLevelOffType: Logger
type Logger interface {
Debug(msg string, keyvals ...interface{})
Info(msg string, keyvals ...interface{})
Warn(msg string, keyvals ...interface{})
Error(msg string, keyvals ...interface{})
With(keyvals ...interface{}) Logger
SetLevel(level LogLevel)
}The structured-logging interface. Plug in your own implementation (slog, zap, zerolog, logrus, etc.) or use the built-in DefaultLogger. All default implementations are concurrency-safe.
Type: DefaultLogger
type DefaultLogger struct {
// contains unexported fields
}A basic logger implementation writing to an io.Writer with structured key=value formatting.
Type: SLogAdapter
type SLogAdapter struct {
// contains unexported fields
}Adapts Go's standard library log/slog logger to the cpe Logger interface. Available for Go 1.21+ via conditional compilation.
🔤 LogLevel.String
func (l LogLevel) String() stringReturns the string representation of the log level ("DEBUG", "INFO", "WARN", "ERROR", "OFF", or "UNKNOWN").
| Return | Type | Description |
|---|---|---|
| #1 | string | The level name |
fmt.Println(cpeskills.LogLevelInfo.String()) // INFO🆕 NewDefaultLogger
func NewDefaultLogger(writer io.Writer, level LogLevel) *DefaultLoggerCreates a new DefaultLogger writing to the given writer. If writer is nil, it defaults to os.Stderr.
| Parameter | Type | Description |
|---|---|---|
writer | io.Writer | The output writer |
level | LogLevel | The minimum log level |
| Return | Type | Description |
|---|---|---|
| #1 | *DefaultLogger | A new logger instance |
logger := cpeskills.NewDefaultLogger(os.Stderr, cpeskills.LogLevelInfo)🚫 NewNopLogger
func NewNopLogger() LoggerCreates a logger that discards all output. This is the default logger used when none is configured.
| Return | Type | Description |
|---|---|---|
| #1 | Logger | A no-op logger |
cpeskills.SetLogger(cpeskills.NewNopLogger())🐛 DefaultLogger.Debug
func (l *DefaultLogger) Debug(msg string, keyvals ...interface{})Logs a debug message with optional key-value pairs.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
logger.Debug("scanning", "component", comp.Name)ℹ️ DefaultLogger.Info
func (l *DefaultLogger) Info(msg string, keyvals ...interface{})Logs an informational message.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
logger.Info("scan complete", "count", n)⚠️ DefaultLogger.Warn
func (l *DefaultLogger) Warn(msg string, keyvals ...interface{})Logs a warning message.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
logger.Warn("deprecated CPE format", "cpe", cpeStr)🚨 DefaultLogger.Error
func (l *DefaultLogger) Error(msg string, keyvals ...interface{})Logs an error message.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
logger.Error("scan failed", "err", err)🏷️ DefaultLogger.With
func (l *DefaultLogger) With(keyvals ...interface{}) LoggerReturns a new Logger with the given key-value pairs pre-populated on every subsequent log line.
| Parameter | Type | Description |
|---|---|---|
keyvals | ...interface{} | Alternating key/value pairs to attach |
| Return | Type | Description |
|---|---|---|
| #1 | Logger | A child logger with the prefix |
sub := logger.With("component", comp.Name)
sub.Info("matched")⚙️ DefaultLogger.SetLevel
func (l *DefaultLogger) SetLevel(level LogLevel)Sets the minimum log level dynamically (concurrency-safe).
| Parameter | Type | Description |
|---|---|---|
level | LogLevel | The new minimum log level |
logger.SetLevel(cpeskills.LogLevelWarn)🌐 SetLogger
func SetLogger(l Logger)Sets the global logger for the entire library. Pass nil to disable logging.
| Parameter | Type | Description |
|---|---|---|
l | Logger | The logger to use globally |
cpeskills.SetLogger(cpeskills.NewDefaultLogger(os.Stderr, cpeskills.LogLevelInfo))🌐 GetLogger
func GetLogger() LoggerReturns the current global logger.
| Return | Type | Description |
|---|---|---|
| #1 | Logger | The current global logger |
logger := cpeskills.GetLogger()🐛 LogDebug
func LogDebug(msg string, keyvals ...interface{})Logs a debug message via the global logger.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
cpeskills.LogDebug("starting scan")ℹ️ LogInfo
func LogInfo(msg string, keyvals ...interface{})Logs an informational message via the global logger.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
cpeskills.LogInfo("scan complete", "count", n)⚠️ LogWarn
func LogWarn(msg string, keyvals ...interface{})Logs a warning message via the global logger.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
cpeskills.LogWarn("deprecated format")🚨 LogError
func LogError(msg string, keyvals ...interface{})Logs an error message via the global logger.
| Parameter | Type | Description |
|---|---|---|
msg | string | The log message |
keyvals | ...interface{} | Alternating key/value pairs |
cpeskills.LogError("scan failed", "err", err)📜 StdLogger
func StdLogger() *log.LoggerReturns a *log.Logger that writes through the global Logger. Useful for passing to third-party libraries that expect a *log.Logger.
| Return | Type | Description |
|---|---|---|
| #1 | *log.Logger | A standard-library logger bridging the global logger |
stdLog := cpeskills.StdLogger()
stdLog.Println("via stdlib")