Skip to content

Level-priority

Convert a Level into its numeric severity priority. This helper provides the ordering used by threshold checks and level comparisons.

Interface

moonbit
pub fn Level::priority(self : Level) -> Int {}

input

  • self : Level - Level value whose numeric severity should be read.

output

  • Int - Numeric severity where larger numbers represent more severe levels.

Explanation

Detailed rules explaining key parameters and behaviors

  • The built-in priorities are Trace=10, Debug=20, Info=30, Warn=40, and Error=50.
  • These values define the severity ordering used by Level::enabled(...) and helpers such as level_at_least(...).
  • Callers should treat the mapping as a stable ordering mechanism rather than as user-facing display text.
  • Higher priority means higher severity.

How to Use

Here are some specific examples provided.

When Compare Levels Explicitly

When code should compare severities numerically:

moonbit
if Level::Warn.priority() > Level::Info.priority() {
  logger.info("warn is more severe than info")
}

In this example, the numeric mapping drives direct comparison logic.

When Build Custom Threshold Logic

When a helper wants to reproduce built-in gating:

moonbit
fn keep(level : Level, min_level : Level) -> Bool {
  level.priority() >= min_level.priority()
}

In this example, the same ordering contract used by the logger API is applied directly.

Error Case

e.g.:

  • There is no failure path for valid Level values.

  • If code depends on the exact numbers instead of the ordering, future refactoring would be more brittle than necessary.

Notes

  1. Prefer Level::enabled(...) when you need threshold semantics rather than raw numeric comparison.

  2. priority() is primarily an ordering helper, not a display helper.

Published from the repository docs folder with VitePress.