Rust:
Loggføring
Hvordan:
La oss sette opp et grunnleggende loggføringsscenario i Rust ved å bruke log
-kassen, som tilbyr en loggføring facade, og env_logger
, en loggføringsimplementasjon for log
-kassen. Først, legg dem til i din Cargo.toml:
[dependencies]
log = "0.4.14"
env_logger = "0.9.0"
Nå, sett opp og initialiser loggeren i din main.rs
:
use log::{info, warn};
fn main() {
env_logger::init();
info!("Dette er en informasjonsmelding.");
warn!("Dette er en advarselmelding.");
}
Kjør appen din med RUST_LOG=info cargo run
, og du vil se følgende utskrift:
INFO: Dette er en informasjonsmelding.
WARN: Dette er en advarselmelding.
Lek rundt med RUST_LOG
miljøvariabelen ved å sette den til error
, warn
, info
, debug
, eller trace
for å kontrollere detaljnivået i loggene dine.
Dypdykk
Konseptet med loggføring er ikke noe nytt; det har vært rundt siden de tidlige dagene av databehandling. Før loggføring ble vanlig i programvare, stolte utviklere på primitive metoder som utskriftssetninger eller feilsøkingverktøy for å spore programutførelse. Etter hvert som programmene økte i kompleksitet, vokste også behovet for strukturerte tilnærminger til loggføring.
I Rust abstraherer log
-kassen bort loggføringsdetaljene, noe som lar utviklere plugge inn forskjellige loggbakender. Selv om env_logger
er et vanlig valg, finnes det alternativer som fern
, slog
eller tracing
, hver med sitt eget sett av funksjoner og konfigurasjonsalternativer.
Noen hensyn når man implementerer loggføring inkluderer:
Logg Nivåer: Kontroll av detaljnivået er nøkkelen. Rust sin
log
-kasse definerer flere loggnivåer: error, warn, info, debug, og trace, i avtagende rekkefølge av alvorlighetsgrad.Ytelse: Loggføring kan påvirke ytelsen. Det er avgjørende å bruke det med omtanke, og sørge for å unngå loggføring i ytelses-kritiske veier eller overdrevet detaljerte logger i produksjon.
Strukturert Loggføring: Moderne beste praksiser innebærer strukturert loggføring, hvor logger skrives i et maskinlesbart format som JSON. Biblioteker som
slog
tillater for strukturert loggføring i Rust, som kan indekseres og spørres ved hjelp av loggforvaltningssystemer som ELK Stack eller Splunk.Asynkron Loggføring: For å minimere påvirkningen på hovedapplikasjonen, kan loggføring gjøres asynkront. Dette oppnås ofte ved å ha loggbiblioteket skrive til en minnebasert kø, og en separat tråd prosesserer køen og skriver logger til bestemmelsesstedet.
Konfigurasjon: Mange loggframewor ker støtter konfigurasjon gjennom miljøvariabler, konfigurasjonsfiler, og/eller kode. Denne fleksibiliteten er nøkkelen for finjustering av utskriften i forskjellige miljøer (utvikling, staging, produksjon).
Se Også
- Dokumentasjonen for
log
-kassen: https://docs.rs/log/ - Dokumentasjonen for
env_logger
-kassen: https://docs.rs/env_logger/ - Rust by Example loggeside: https://doc.rust-lang.org/rust-by-example/std_misc/log.html
slog
-kassen, et alternativt loggeframewor k: https://github.com/slog-rs/slog- Tracing, et rammeverk for instrumentering av Rust-programmer: https://crates.io/crates/tracing