Priority issues between environment variable `RUST_LOG` and function call `filter_level` / `filter`.

Aberta
#259 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
35/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
rust

Direção de pesquisa

Comece pelo comportamento do builder do logger em torno de filter_level(level), filter(None, level) e da inicialização de RUST_LOG. Determine como as prioridades são aplicadas atualmente e, em seguida, defina a precedência esperada para que RUST_LOG possa substituir o nível codificado diretamente no código e adicione cobertura para ambas as formas de inicialização.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Environment variable RUST_LOG can only used to set "default policy", which means if filter_level(level) or filter(None, level) (they are practically equivalent) called at logger init, then environment variable RUST_LOG will cannot override the hardcoded log level.

This because environment variable RUST_LOG will initialized first (by default), then override by program logic. This might be a bug because commonly priority of environment variable > cli flag > config file or hardcoded.

Demo:

use log::{info, LevelFilter};

fn main() {
    // Hardcoded log level by using `filter_level` or `filter`.
    env_logger::builder().filter_level(LevelFilter::Info).init();

    info!("starting up");
}

If set the environment variable RUST_LOG=warn, info output will still print:

demo on  master [?] is 📦 v0.1.0 via 🦀 v1.67.0
at 14:04:38 fsh ❯ RUST_LOG=warn cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/demo`
[2023-01-31T06:04:43Z INFO  demo] starting up

But if not setting log level at logger init:

use log::info;

fn main() {
    env_logger::builder().init();
    info!("starting up");
}

Then log level can be controlled easylly from RUST_LOG:

demo on  master [?] is 📦 v0.1.0 via 🦀 v1.67.0
at 14:07:17 fsh ❯ RUST_LOG=info cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/demo`
[2023-01-31T06:07:21Z INFO  demo] starting up

demo on  master [?] is 📦 v0.1.0 via 🦀 v1.67.0
at 14:07:21 fsh ❯ RUST_LOG=warn cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/demo`

Linguagem predominante
Rust
Estrelas
1.1k
Forks
149
Merge médio
2min
PRs com merge (30d)
1

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de rust-cli/env_logger

Todas as issues de rust-cli/env_logger

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.