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.
Follow-up to the per-component builders (PR #190, commit dd9cbe7).
Problem
ComponentsBuilder::buildbakes in the log backend:Chain, store, and the lattice
Extare each pluggable through aComponentBuilder, butLogPipelineis not. An embedder who wants a custom log sink cannot substitute it without reconstructingComponentsby hand.Proposed
Give the log pipeline the same seam: a
LogPipelineBuilder(with a default reproducing todaysin_memorybehaviour, analogous to the()no-opComponentBuilderfor a core-onlyExt), added as a fourth member ofComponentsBuilder<C, S, E, L>`.Scope
Changes the
ComponentsBuildergeneric 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.