Rust:
Lokitus
Miten:
Aloitetaan peruslokitus skenaarion pystyttäminen Rustissa käyttäen log
-kirstua, joka tarjoaa lokitusfasaadin, ja env_logger
, lokitusimplementaation log
-kirstulle. Aluksi, lisää ne Cargo.toml-tiedostoosi:
[dependencies]
log = "0.4.14"
env_logger = "0.9.0"
Nyt, pystytä ja alusta lokitus main.rs
-tiedostossasi:
use log::{info, warn};
fn main() {
env_logger::init();
info!("Tämä on infotason viesti.");
warn!("Tämä on varoitusviesti.");
}
Aja sovelluksesi komennolla RUST_LOG=info cargo run
, ja näet tulosteen:
INFO: Tämä on infotason viesti.
WARN: Tämä on varoitusviesti.
Kokeile eri RUST_LOG
-ympäristömuuttujan arvoja asettamalla se error
, warn
, info
, debug
tai trace
säätääksesi lokisi yksityiskohtaisuutta.
Syväsukellus
Lokituksen konsepti ei ole mitään uutta; se on ollut olemassa tietokoneiden alkuaikojen jälkeen. Ennen kuin lokitus oli yleistä ohjelmistossa, kehittäjät turvaantuivat alkeellisiin menetelmiin kuten tulostuslauseisiin tai debuggerityökaluihin ohjelman suorituksen jäljittämiseen. Ohjelmien monimutkaistuessa monimutkaistui myös tarve jäsennellyille lokituslähestymistavoille.
Rustissa log
-kirstu abstrahoi lokitusyksityiskohdat, mahdollistaen kehittäjien liittää erilaisia lokitusbackendejä. Vaikka env_logger
on yleinen valinta, on olemassa vaihtoehtoja kuten fern
, slog
tai tracing
, joissa jokaisessa on oma ominaisuuksiensa ja konfiguraatiovaihtoehtojensa sarja.
Jotkin pohdittavat asiat lokituksen toteutuksessa sisältävät:
Lokitason: Yksityiskohtaisuuden hallinta on avainasemassa. Rustin
log
-kirstu määrittelee useita lokitasoja: error, warn, info, debug ja trace, vakavuuden vähentyessä järjestyksessä.Suorituskyky: Lokitus voi vaikuttaa suorituskykyyn. Kriittistä on käyttää sitä harkiten, varmistaen että vältetään lokitusta suorituskyvyltään kriittisillä poluilla tai liian yksityiskohtaisia lokeja tuotannossa.
Rakenteellinen Lokitus: Nykyaikaiset parhaat käytännöt sisältävät rakenteellisen lokituksen, missä lokit kirjoitetaan koneellisesti luettavaan muotoon kuten JSON. Kirjastot kuten
slog
mahdollistavat rakenteellisen lokituksen Rustissa, jota voidaan indeksoida ja kysellä käyttäen lokinhallintajärjestelmiä kuten ELK Stack tai Splunk.Asynkroninen Lokitus: Pääsovelluksen vaikutusten minimoimiseksi lokitus voidaan suorittaa asynkronisesti. Tämä saavutetaan usein antamalla lokituskirjaston kirjoittaa muistissa olevaan jonoon, ja erillinen säie käsittelee jonoa ja kirjoittaa lokit määränpäähän.
Konfiguraatio: Monet lokituskehykset tukevat konfiguraatiota ympäristömuuttujien, konfiguraatiotiedostojen ja/tai koodin kautta. Tämä joustavuus on avainasemassa tulostuksen hienosäätöön erilaisissa ympäristöissä (kehitys, staging, tuotanto).
Katso Myös
log
-kirstun dokumentaatio: https://docs.rs/log/env_logger
-kirstun dokumentaatio: https://docs.rs/env_logger/- Rust by Example lokitus sivu: https://doc.rust-lang.org/rust-by-example/std_misc/log.html
slog
-kirstu, vaihtoehtoinen lokituskehys: https://github.com/slog-rs/slog- Tracing, kehys Rust-ohjelmien instrumentointiin: https://crates.io/crates/tracing