- Add package-level documentation with usage examples and architecture details - Document all public types, functions, and methods following godoc conventions - Remove unused logger.Error type and NewError function - Apply consistent documentation style across all packages Packages updated: - apitls: TLS certificate management with automatic renewal - config: Environment-based configuration system - config/depenv: Deployment environment handling - ekko: Enhanced Echo web framework wrapper - kafka: Kafka client wrapper with TLS support - logger: Structured logging with OpenTelemetry integration - tracing: OpenTelemetry distributed tracing setup - types: Shared data structures for NTP Pool project - xff/fastlyxff: Fastly CDN IP range management All tests pass after documentation changes.
58 lines
1.8 KiB
Go
58 lines
1.8 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"log/slog"
|
|
)
|
|
|
|
// stdLoggerish provides a bridge between legacy log interfaces and slog.
|
|
// It implements common logging methods (Println, Printf, Fatalf) that
|
|
// delegate to structured logging with a consistent key prefix.
|
|
type stdLoggerish struct {
|
|
key string // Prefix key for all log messages
|
|
log *slog.Logger // Underlying structured logger
|
|
f func(string, ...any) // Log function (Info or Debug level)
|
|
}
|
|
|
|
// NewStdLog creates a legacy-compatible logger that bridges to structured logging.
|
|
// This is useful for third-party libraries that expect a standard log.Logger interface.
|
|
//
|
|
// Parameters:
|
|
// - key: Prefix added to all log messages for identification
|
|
// - debug: If true, logs at debug level; otherwise logs at info level
|
|
// - log: Underlying slog.Logger (uses Setup() if nil)
|
|
//
|
|
// The returned logger implements Println, Printf, and Fatalf methods.
|
|
func NewStdLog(key string, debug bool, log *slog.Logger) *stdLoggerish {
|
|
if log == nil {
|
|
log = Setup()
|
|
}
|
|
sl := &stdLoggerish{
|
|
key: key,
|
|
log: log,
|
|
}
|
|
sl.f = log.Info
|
|
if debug {
|
|
sl.f = log.Debug
|
|
}
|
|
|
|
return sl
|
|
}
|
|
|
|
// Println logs the arguments using the configured log level with the instance key.
|
|
func (l stdLoggerish) Println(msg ...any) {
|
|
l.f(l.key, "msg", msg)
|
|
}
|
|
|
|
// Printf logs a formatted message using the configured log level with the instance key.
|
|
func (l stdLoggerish) Printf(msg string, args ...any) {
|
|
l.f(l.key, "msg", fmt.Sprintf(msg, args...))
|
|
}
|
|
|
|
// Fatalf logs a formatted error message and panics.
|
|
// Note: This implementation panics instead of calling os.Exit for testability.
|
|
func (l stdLoggerish) Fatalf(msg string, args ...any) {
|
|
l.log.Error(l.key, "msg", fmt.Sprintf(msg, args...))
|
|
panic("fatal error") // todo: does this make sense at all?
|
|
}
|