Files
BitLogger/docs/api/append-fields.md
T
2026-05-12 16:00:17 +08:00

2.1 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
append-fields api patching 20260512 Create a reusable record patch that appends extra fields to the record.
patch
fields
transform
public

Append-fields

Create a RecordPatch that appends extra fields to rec.fields. Use it when records should be enriched with stable metadata before reaching sinks.

Interface

pub fn append_fields(extra_fields : Array[Field]) -> RecordPatch {}

input

  • extra_fields : Array[Field] - Fields appended after the record's existing field list.

output

  • RecordPatch - Patch that returns a record with appended fields.

Explanation

Detailed rules explaining key parameters and behaviors

  • If extra_fields is empty, the patch returns the original record unchanged.
  • If the original record has no fields, the appended fields become the new field list.
  • Otherwise, the original fields stay first and extra_fields are appended afterward.
  • This helper is useful for environment tags, service metadata, and bridge-layer context.

How to Use

Here are some specific examples provided.

When Add Service Metadata

When every record should carry shared context:

let logger = Logger::new(console_sink())
  .with_patch(append_fields([
    field("service", "billing"),
    field("region", "cn"),
  ]))

In this example, the extra fields are added to every emitted record.

When Compose With Message Rewriting

When both visible and structured context are needed:

let patch = compose_patches([
  prefix_message("[api] "),
  append_fields([field("component", "gateway")]),
])

In this example, the record gains both textual and structured enrichment.

Error Case

e.g.:

  • If extra_fields is empty, the patch behaves like a no-op.

  • If appended field keys duplicate existing keys, both copies remain in the field list.

Notes

  1. This helper appends fields; it does not deduplicate or overwrite existing entries.

  2. Field order can matter for downstream formatting or inspection, so keep appended context intentional.