Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Option to conditionally log to stderr only above a given level

Ouverte
#219 8 commentaires 9 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
rust
Domaine
observability

Piste de recherche

Commencez par localiser la configuration Target de env_logger et le chemin de Builder::format() mentionné dans l’issue. Vérifiez comment les records sont actuellement redirigés vers stdout ou stderr, puis ajoutez une redirection conditionnelle selon le niveau de log et vérifiez que les records de niveau inférieur utilisent stdout, tandis que les records du niveau configuré ou supérieur utilisent stderr.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

enhancement

When using env_logger in a binary running in Google Kubernetes Engine, everything it logs gets recorded as an error log because it logs to stderr by default:

image

This is just the actix-web logger middleware logging requests from the Gcloud healthcheck service at INFO (plus an easter egg of a web crawler looking for an admin login form?), but Gcloud thinks they're error logs because they were printed to stderr.

Of course, we could just set Target::Stdout and call it a day, but I would like to retain the ability to print actual error logs to stderr as we want to set this up to page someone if our API service is throwing actual errors.

I'm thinking another variant to Target that looks something like:

enum Target {
    // ...

    // Print to `stderr` if the record level is at or above the given `log::Level`, otherwise `stdout`.
    StdoutOrStderrAt(log::Level),
}

I'm also considering, as a workaround, using the Builder::format() method to conditionally print to stderr but I'm not sure if this would break things. It's suboptimal either way:

builder.format(|f, record| {
    if record.level() >= log::Level::Error {
        eprintln!(/* format `record` using the same format as the default formatter */)
    } else {
        write!(fmt, "{}", record.args())
    }
})
Langage dominant
Rust
Étoiles
1.1k
Forks
150
Merge moyen
2 min
PR mergées (30 j)
1

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de rust-cli/env_logger

Toutes les issues de rust-cli/env_logger

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.