v0.7.0

Released: 2026-05-01 Tag: v0.7.0 Type: Minor — new feature (slog logger registry) PR: #41 — feat/issue-32-slog-logger-registry

What Changed

logging / logging/slog — Named logger registry

New package providing deterministic named logger access backed by log/slog.

logger, err := application.GetLogger("auth")
logger.Infof("user %s authenticated", userID)

appGetLogger accessor

logger, err := application.GetLogger(name string) (logging.Logger, error)
  • Pre-UseConfig: returns logging.ErrLoggingNotReady.
  • Empty name: returns logging.ErrLoggerNameRequired.
  • Same name → same instance (deterministic, isolated per Application).

Config keys

logging:
  enabled: true
  level: info      # debug | info | warn | error
  format: json     # json | text
  loggers:
    auth:
      level: debug
    billing:
      enabled: false

Env overrides

COMMON_FWK_LOGGING_ENABLED=true
COMMON_FWK_LOGGING_LEVEL=warn
COMMON_FWK_LOGGING_FORMAT=json
COMMON_FWK_LOGGING_LOGGERS_AUTH_LEVEL=debug

Precedence matrix

Setting Resolution
enabled per-logger override → root
level per-logger override → root
format root only

Output contract

All records include: logger, ts, level, msg.

Loki guidance

Use collector-first integration (Promtail / OTel Collector → Loki). Do not couple the app directly to a Loki HTTP sink.

Compatibility

  • No breaking changes. GetLogger is additive.
  • Logger registry is isolated per Application instance.