zed-industries/zed · error

Invalid level: {level}

Error message

Invalid level: {level}

What it means

Sentinel validation error from zlog's parse_level helper: the ZED_LOG level string matched none of the accepted case-insensitive levels (TRACE, DEBUG, INFO, WARN, ERROR, OFF/NONE). The offending raw string is embedded in the message.

Source

Thrown at crates/zlog/src/env_config.rs:60

    if level.eq_ignore_ascii_case("TRACE") {
        return Ok(log::LevelFilter::Trace);
    }
    if level.eq_ignore_ascii_case("DEBUG") {
        return Ok(log::LevelFilter::Debug);
    }
    if level.eq_ignore_ascii_case("INFO") {
        return Ok(log::LevelFilter::Info);
    }
    if level.eq_ignore_ascii_case("WARN") {
        return Ok(log::LevelFilter::Warn);
    }
    if level.eq_ignore_ascii_case("ERROR") {
        return Ok(log::LevelFilter::Error);
    }
    if level.eq_ignore_ascii_case("OFF") || level.eq_ignore_ascii_case("NONE") {
        return Ok(log::LevelFilter::Off);
    }
    anyhow::bail!("Invalid level: {level}")
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn global_level() {
        let input = "info";
        let filter = parse(input).unwrap();

        assert_eq!(filter.level_global.unwrap(), log::LevelFilter::Info);
        assert!(filter.directive_names.is_empty());
        assert!(filter.directive_levels.is_empty());
    }

    #[test]
    fn directive_level() {

View on GitHub (pinned to f4178619ac)

Solutions

  1. Set the log level env var to one of: TRACE, DEBUG, INFO, WARN, ERROR, OFF, or NONE
  2. Check for typos like 'WARNING' (use WARN) or 'FATAL' (use ERROR)
  3. Trim whitespace/quotes that may have leaked into the environment variable
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/zlog/src/env_config.rs:60 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of zed-industries/zed@f4178619ac (2026-08-20). Data as JSON: /api/errors/af7e1ecf43ad1966. Report an issue: GitHub.