Logging in Rust-Anwendungen: Best Practices für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einführung in das Logging in Rust



Logging (Protokollierung) ist der Prozess der Aufzeichnung von Informationen über den Programmablauf. Für Anfänger in Rust mag Logging kompliziert erscheinen, aber tatsächlich ist es eines der mächtigsten Werkzeuge für Debugging und Monitoring. In diesem Artikel werden wir die besten Praktiken für das Logging in Rust behandeln, die Ihnen helfen, zuverlässigere und wartbarere Anwendungen zu schreiben.



Warum ist Logging so wichtig? Stellen Sie sich vor, Ihre Anwendung stürzt unerwartet in der Produktion ab. Ohne Logs tappen Sie völlig im Dunkeln – Sie müssen raten, was schiefgelaufen ist. Mit richtig konfiguriertem Logging können Sie den Fehler schnell finden und beheben. In Rust basiert das Logging-Ökosystem auf leistungsstarken und flexiblen Crates, die wir heute betrachten werden.



1. Grundlagen des Loggings: Die Crate log



In Rust ist die De-facto-Standard-Crate für Logging die Crate log. Sie bietet eine abstrakte Schnittstelle, die unabhängig von der konkreten Implementierung ist. Das bedeutet, Sie können Code mit den Makros von log schreiben und später zwischen verschiedenen Backends (z. B. env_logger, log4rs oder slog) wechseln, ohne den Hauptcode zu ändern.



Installation und Konfiguration



Fügen Sie die Abhängigkeit zu Ihrer Cargo.toml hinzu:



[dependencies]log = "0.4"env_logger = "0.10"


Jetzt können Sie die Logging-Makros in Ihrem Code verwenden. Hier ist ein einfaches Beispiel:



use log::{info, warn, error};

fn main() { // Logger initialisieren env_logger::init();

let user = "Alexej"; let age = 25;

info!("Anwendung gestartet"); warn!("Benutzer {} ist {} Jahre alt, überprüfen Sie die Daten", user, age); error!("Verbindung zur Datenbank fehlgeschlagen");

println!("Programm beendet");}


Wichtig: Ohne den Aufruf von env_logger::init() geben die log-Makros nichts aus. Die Initialisierung muss einmalig ganz am Anfang des Programms erfolgen.



Logging-Stufen



Die Crate log unterstützt fünf Logging-Stufen (von der wichtigsten zur unwichtigsten):



  • error! — Kritische Fehler, die sofortige Aufmerksamkeit erfordern. Verwenden Sie dies für Situationen, in denen das Programm nicht weiterarbeiten kann.
  • warn! — Warnungen. Etwas ist schiefgelaufen, aber das Programm kann weiterarbeiten (z. B. veraltete API oder unerwarteter Wert).
  • info! — Allgemeine Informationen zum Programmablauf. Nützlich zum Verfolgen wichtiger Ereignisse (Start, Ende, wichtige Übergänge).
  • debug! — Debug-Informationen. Wird während der Entwicklung für detaillierte Analysen verwendet.
  • trace! — Die detaillierteste Stufe. Zeichnet jeden Schritt der Ausführung auf. Mit Vorsicht verwenden – kann die Ausgabe stark überladen.


Die Filterung nach Stufe erfolgt automatisch. Standardmäßig gibt env_logger alle Nachrichten der Stufen error, warn und info aus. Sie können dies einfach mit der Umgebungsvariablen RUST_LOG ändern:



# Nur Fehler anzeigenRUST_LOG=error cargo run

# Alles anzeigen, inklusive traceRUST_LOG=trace cargo run

# Nur für ein bestimmtes Modul anzeigenRUST_LOG=my_module=debug cargo run


2. Praktisches Logging: Strukturierte Logs



Einfaches String-Logging ist gut, aber für Produktionssysteme ist strukturiertes Logging besser. Anstatt "Benutzer Alexej hat sich angemeldet" zu schreiben, können Sie ein JSON-Objekt mit den Feldern event, user, timestamp aufzeichnen. Dies vereinfacht die Analyse von Logs mit Tools wie Elasticsearch oder Grafana.



Verwendung

Blogs

Buchempfehlungen