Skip to content

Set-target

Create a RecordPatch that rewrites rec.target to a fixed string. Use it when records should be reclassified or routed under a normalized target.

Interface

moonbit
pub fn set_target(target : String) -> RecordPatch {}

input

  • target : String - Target value that should replace the original record target.

output

  • RecordPatch - Patch that returns a record with the new target.

Explanation

Detailed rules explaining key parameters and behaviors

  • The patch copies the original record and replaces only its target.
  • Message, level, timestamp, and fields are preserved.
  • This helper is useful when several call sites should appear under one logical namespace.
  • It can be combined with prefix_message(...) or append_fields(...) in ordered pipelines.

How to Use

Here are some specific examples provided.

When Normalize Child Targets

When several producers should share one target label:

moonbit
let logger = Logger::new(console_sink(), target="worker")
  .with_patch(set_target("worker.batch"))

In this example, downstream filters and sinks only see worker.batch.

When Redirect Records Before Fanout

When a routing layer expects one canonical target:

moonbit
let patch = compose_patches([
  set_target("audit"),
  append_fields([field("source", "legacy")]),
])

In this example, reclassification and enrichment happen in a predictable order.

Error Case

e.g.:

  • If target is empty, the patch still rewrites the record target to an empty string.

  • If later patches also rewrite the target, the last applied patch wins.

Notes

  1. Use this helper for target normalization, not for filtering decisions.

  2. Prefer explicit patch order when multiple target rewrites are possible.

Published from the repository docs folder with VitePress.