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.
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.Developmentpackage providing:ConsoleSinkChannelthat writes a colour-coded, human-readable representation of eachCloudEventtostdoutor to anyILoggertarget, including the full envelope attributes and a syntax-highlighted JSON or YAML rendering of thedatapayload.AddDevelopmentConsole()extension onEventPublisherBuilderthat registers the channel only whenIHostEnvironment.IsDevelopment()istrue(or an explicit opt-in flag is set), so the channel is automatically excluded from staging and production builds without code changes.UseStructuredOutput()option to emit events as NDJSON lines instead of human-readable text, for use with tools likejqor log aggregators in local Compose setups.IEventMiddleware: the sink respects the full middleware pipeline, so enriched attributes (correlation ID, trace context, custom extensions) are visible in the output.Benefits:
jqfor ad-hoc filtering and inspection during debugging sessions.