Skip to content

Level-at-least ​

Create a RecordPredicate that returns true when a record level is greater than or equal to a minimum threshold. This is the main helper for severity-based filtering.

Interface ​

moonbit
pub fn level_at_least(min_level : Level) -> RecordPredicate {}

input ​

  • min_level : Level - The lowest level that should remain enabled.

output ​

  • RecordPredicate - Predicate that keeps records whose priority() is at least the given minimum.

Explanation ​

Detailed rules explaining key parameters and behaviors

  • Matching is based on Level::priority(), not string comparison.
  • Records at the exact same level as min_level are included.
  • This helper is useful when a sink or child logger needs a stricter threshold than the parent logger.
  • It composes cleanly with all_of(...) and any_of(...).

How to Use ​

Here are some specific examples provided.

When Keep Warnings And Errors ​

When a logger should keep only important records:

moonbit
let logger = Logger::new(console_sink())
  .with_filter(level_at_least(Level::Warn))

In this example, Warn and Error records continue through the filter.

When Combine With Target Routing ​

When both severity and namespace matter:

moonbit
let predicate = all_of([
  target_has_prefix("service.api"),
  level_at_least(Level::Info),
])

In this example, the predicate can be reused by multiple loggers or sinks.

Error Case ​

e.g.:

  • If min_level is Level::Trace, the predicate effectively allows all normal log records.

  • If min_level is higher than the record level, the predicate returns false without modifying the record.

Notes ​

  1. Use this helper when you want filtering logic to remain explicit instead of embedding level checks inline.

  2. This predicate is separate from a logger's own min_level, so both can be combined.

Published from the repository docs folder with VitePress.