Skip to content

API Stability

obslog follows Semantic Versioning (REL-001). The Record schema is versioned independently via schema_version (REL-002).

What is public

Public API is exactly the symbols re-exported from obslog and these documented submodules (API-017):

Namespace Public surface
obslog get_logger, configure, configure_from_file, configure_from_env, configure_from_mapping, context, new_id, lazy, Logger, Level, Telemetry, Lazy
obslog.sinks Stream, Memory, Null, Multi, Pipeline, Batching
obslog.formats json, console, JsonFormatter, ConsoleFormatter
obslog.processors Redact, Sample, Enrich
obslog.diagnostics CodeRegistry, ErrorCode, UnknownErrorCode, CheckCodes, hint, build_bundle, bundle_to_json, BundleSink
obslog.testing MemorySink, NullSink, capture, null_logger, FrozenClock, SequentialIds, snapshot, snapshot_json, normalize_record
obslog.integrations LoggingSink, ObslogHandler, ASGICorrelationMiddleware
obslog.integrations.opentelemetry OTelExporter, record_to_otel
obslog.plugins discover, Registry

Anything with a leading underscore, and anything not listed above, is private and may change without notice.

Guarantees at 1.0

  • The public API surface above is frozen for the 1.x series: no breaking changes except in a major (2.0) release (REL-003).
  • The reserved Record fields, their names, and their types are frozen (SCHEMA-001); the schema evolves only additively within schema major version 1 (SCHEMA-008).
  • Extension protocols (Sink, Processor, Formatter, Exporter, ContextExtractor, Clock, IdGenerator) are stable contracts.

Deprecation policy

Deprecations ship with a documented migration path and a deprecation period (at least one minor release) before removal (REL-004). Deprecated APIs emit a DeprecationWarning.

Pre-1.0

While the version is 0.x, the public API may still change; such changes are called out in the changelog.