Skip to content

runtime: make the log pipeline pluggable through a ComponentBuilder seam #265

Description

@mfw78

Follow-up to the per-component builders (PR #190, commit dd9cbe7).

Problem

ComponentsBuilder::build bakes in the log backend:

let logs = LogPipeline::in_memory(ctx.config.limits.logs());

Chain, store, and the lattice Ext are each pluggable through a ComponentBuilder, but LogPipeline is not. An embedder who wants a custom log sink cannot substitute it without reconstructing Components by hand.

Proposed

Give the log pipeline the same seam: a LogPipelineBuilder (with a default reproducing todays in_memorybehaviour, analogous to the()no-opComponentBuilderfor a core-onlyExt), added as a fourth member of ComponentsBuilder<C, S, E, L>`.

Scope

Changes the ComponentsBuilder generic signature, so it ripples to the builder/launcher cars that construct it (#193/#194). Kept out of #190 for that reason; own PR, ideally alongside the add-ons/observability work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    component/observabilitytracing, metrics, health endpointdebtCode works but makes future work harder.dxDeveloper experience is suffering.effort/hoursFew hours. Single PR.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions