Record-patch
RecordPatch is the public function type used for record transformation. It represents any function that receives a Record and returns a new Record, and it is the shared shape behind helpers such as set_target(...), prefix_message(...), and append_fields(...).
Interface
pub type RecordPatch = @utils.RecordPatchoutput
RecordPatch- A function type equivalent to(Record) -> Record.
Explanation
Detailed rules explaining key parameters and behaviors
- This is a type alias, not a new runtime wrapper.
- Any function matching
(Record) -> Recordcan be used wherever aRecordPatchis expected. - Patches are used by
Logger::with_patch(...),patch_sink(...), and helper constructors inpatchers.mbt. - The alias exists to make record-rewrite APIs clearer and easier to read in public signatures.
How to Use
Here are some specific examples provided.
When Need A Custom Record Rewrite Step
When a logger should rewrite each record before sink write:
let patch : RecordPatch = fn(rec) { rec.with_message("[custom] " + rec.message) }
let logger = Logger::new(console_sink()).with_patch(patch)In this example, the alias makes the custom transformation shape explicit.
When Compose Existing Patch Helpers
When several reusable transformations should be combined:
let patch : RecordPatch = compose_patches([
set_target("service.worker"),
prefix_message("[worker] "),
])In this example, the alias describes the common type returned by the patch helper constructors.
Error Case
e.g.:
A patch that drops important fields or overwrites the target can change downstream observability unexpectedly.
A patch that allocates heavily or copies too much data can add cost to every write path.
Notes
Use the alias when function signatures should communicate transformation intent clearly.
Helper constructors in
patchers.mbtare usually preferable to handwritten patches for common cases.