Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Option to conditionally log to stderr only above a given level

Offen
#219 8 Kommentare 9 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
45/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
rust
Bereich
observability

Rechercherichtung

Beginne damit, die Target-Konfiguration von env_logger und den im Issue erwähnten Pfad von Builder::format() zu finden. Prüfe, wie Records derzeit an stdout oder stderr weitergeleitet werden, füge dann eine bedingte Weiterleitung nach Log-Level hinzu und verifiziere, dass Records mit niedrigerem Level stdout verwenden, während Records auf oder über dem konfigurierten Level stderr verwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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())
    }
})
Vorherrschende Sprache
Rust
Sterne
1.1k
Forks
150
Ø Merge
2 Min.
Gemergte PRs (30 T.)
1

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus rust-cli/env_logger

Alle Issues in rust-cli/env_logger

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.