Skip to content

Local Development Console Sink #72

Description

@tsutomi

A zero-configuration channel that pretty-prints every published CloudEvent to the console (or an ILogger sink) during local development, removing the need to run a real broker in the developer inner loop.

The problem today: To observe published events locally, developers must run a broker (RabbitMQ, Azure Service Bus emulator, etc.), configure credentials, and inspect broker-specific management UIs — a significant setup burden that slows down the development inner loop. There is no built-in way to simply print events to the terminal while iterating on domain logic.

What we will build: A Deveel.Events.Publisher.Development package providing:

  • A ConsoleSinkChannel that writes a colour-coded, human-readable representation of each CloudEvent to stdout or to any ILogger target, including the full envelope attributes and a syntax-highlighted JSON or YAML rendering of the data payload.
  • An AddDevelopmentConsole() extension on EventPublisherBuilder that registers the channel only when IHostEnvironment.IsDevelopment() is true (or an explicit opt-in flag is set), so the channel is automatically excluded from staging and production builds without code changes.
  • A UseStructuredOutput() option to emit events as NDJSON lines instead of human-readable text, for use with tools like jq or log aggregators in local Compose setups.
  • Integration with IEventMiddleware: the sink respects the full middleware pipeline, so enriched attributes (correlation ID, trace context, custom extensions) are visible in the output.

Benefits:

  • Developers can see exactly which events their domain logic emits — including all enriched attributes — without leaving the terminal or launching a broker management UI.
  • The environment guard prevents accidental activation in production; opting in explicitly in staging is still possible via a configuration flag.
  • Structured NDJSON output makes it easy to pipe events to jq for ad-hoc filtering and inspection during debugging sessions.
  • Zero extra infrastructure — the channel has no external dependencies, making it usable in CI pipelines to audit the events emitted by an integration test suite.

Metadata

Metadata

Assignees

No one assigned
    No fields configured for Feature.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions