Files
BitLogger/docs/api/record-predicate.md
2026-06-13 20:51:03 +08:00

2.2 KiB

name, group, category, update-time, description, key-word
name group category update-time description key-word
record-predicate api helper 20260613 Public predicate function type used for logger filtering and record selection.
predicate
filter
record
public

Record-predicate

RecordPredicate is the public function type used for record filtering. It represents any function that receives a Record and returns Bool, and it is the shared shape behind helpers such as level_at_least(...), target_is(...), and filter_sink(...).

Interface

pub type RecordPredicate = @utils.RecordPredicate

output

  • RecordPredicate - A function type equivalent to (Record) -> Bool.

Explanation

Detailed rules explaining key parameters and behaviors

  • This is a type alias, not a new runtime wrapper.
  • Any function matching (Record) -> Bool can be used wherever a RecordPredicate is expected.
  • Predicates are used by Logger::with_filter(...), filter_sink(...), and helper constructors in filters.mbt.
  • The alias exists to make filtering APIs clearer and easier to read in public signatures.

How to Use

Here are some specific examples provided.

When Need A Custom Logger Filter

When a logger should only accept records that match local rules:

let predicate : RecordPredicate = fn(rec) { rec.level.priority() >= Level::Warn.priority() }
let logger = Logger::new(console_sink()).with_filter(predicate)

In this example, the alias makes the custom filter shape explicit.

When Compose Existing Predicate Helpers

When several reusable filters should be combined:

let predicate : RecordPredicate = all_of([
  target_has_prefix("service"),
  not_(message_contains("ignore")),
])

In this example, the alias describes the common type returned by the helper constructors.

Error Case

e.g.:

  • A predicate that always returns false is valid but will suppress all matching writes.

  • A predicate that is expensive to evaluate can add avoidable cost to every filtered record.

Notes

  1. Use the alias when function signatures should communicate filtering intent clearly.

  2. Helper constructors in filters.mbt are usually preferable to handwritten predicates for common cases.