Skip to content

Field-type

Field is the public structured metadata item type used on records, logger context, filters, and patch helpers. It is a direct alias to the core record field model that stores one key and one value string.

Interface

moonbit
pub type Field = @core.Field

output

  • Field - Public structured field value containing key and value text.

Explanation

Detailed rules explaining key parameters and behaviors

  • This is a type alias, not a constructor helper by itself.
  • The current fields are key : String and value : String.
  • field(...) and fields(...) construct this type as the main public helpers.
  • The same value type is consumed by Record::new(...), Logger::bind(...), write APIs that accept fields, field-based predicates, and record patch helpers.

How to Use

Here are some specific examples provided.

When Need A Typed Reusable Metadata Value

When one field should be created once and reused across records or loggers:

moonbit
let service_field : Field = field("service", "billing")

In this example, the metadata stays as a typed reusable value instead of being rebuilt inline each time.

When Need To Attach Structured Context To A Record

When code should pass field values into record creation directly:

moonbit
let rec = Record::new(Level::Info, "accepted", fields=[field("user", "alice")])

In this example, the field type becomes part of the record's structured metadata payload.

Error Case

e.g.:

  • Field itself does not have a runtime failure mode.

  • Empty keys or values are still stored as-is because the type is plain structured data rather than a validated schema.

Notes

  1. Use field(...) when you need a value of this type in code.

  2. Use arrays of Field when attaching multiple metadata entries to records, loggers, or global emitters.

Published from the repository docs folder with VitePress.