main
Testing Build, Check & Preview Release / Build, Check & Create Preview Release (push) Skipped
Main Release & Publish / Erkenne relevante Code-Änderungen (push) Successful in 7s
Security Scans / Trivy & OSV-Scanner (push) Successful in 37s
Main Release & Publish / Build, Publish Crate to Gitea Registry & Create Release (push) Successful in 1m16s
TruffleHog Secret Scan / TruffleHog (push) Successful in 21s
Reviewed-on: #17
Logger (logger-ctdra)
logger-ctdra ist eine leichtgewichtige, threadsichere Logging-Crate für Rust mit Schweregrad-Filterung, formatierten Terminalausgaben und automatischer Dateiprotokollierung.
Merkmale
- Dual-Output: Protokolliert synchron auf die Standard-Streams (
stdout/stderr) und gleichzeitig in tagesbasierte Logdateien (log-YYYY-MM-DD.log). - Schweregrad-Filterung (
LogLevel):Error(1) — Kritische Fehler (Ausgabe aufstderrmit[!]-Präfix)Warn(2) — Warnungen (Ausgabe aufstdoutmit[?]-Präfix)Info(3) — Betriebsinformationen (Ausgabe aufstdoutmit[i]-Präfix)Debug(4) — Diagnoseausgaben (Ausgabe aufstdoutmit[d]-Präfix)
- Threadsicherheit: Dateischreibzugriffe und Konfiguration sind thread-sicher serialisiert.
- Einheitliches Format:
[Präfix][DD.MM.YYYY HH:MM:SS.mmm][LEVEL][Tag]: Nachricht - Flexible Konfiguration:
- Log-Level per Code (
set_log_level), Umgebungsvariable (LOG_LEVELbzw.RUST_LOG) oder Fallback (Info). - Automatisches Ermitteln des Programmnamens via
program-ctdra(mit zufälligem Fallback-Wert). - Anpassbares Log-Verzeichnis (
set_log_dir) oder automatische Ablage im Temp-Verzeichnis (std::env::temp_dir()).
- Log-Level per Code (
Installation
Aus der Gitea Cargo Package Registry
Füge die Gitea-Registry zu deiner ~/.cargo/config.toml hinzu:
[registries.gitea]
index = "sparse+https://gitea.creative-dragonslayer.de/api/packages/Rust-Crates/cargo/"
Füge anschließend die Abhängigkeit in deiner Cargo.toml ein:
[dependencies]
logger-ctdra = { version = "1.0.1", registry = "gitea" }
Alternativ als Git- oder Pfad-Abhängigkeit:
[dependencies]
logger-ctdra = { git = "https://gitea.creative-dragonslayer.de/Rust-Crates/logger.git", branch = "main" }
# oder lokal:
# logger-ctdra = { path = "../Logger" }
Verwendung
Grundlegendes Beispiel
use logger_ctdra::{log, set_log_level, LogLevel};
fn main() {
// Optional: Log-Level setzen (Standard: Info)
set_log_level(LogLevel::Debug);
log("main", "Anwendung gestartet", LogLevel::Info);
log("network", "Verbindung hergestellt", LogLevel::Debug);
log("auth", "Ungültiger Token erhalten", LogLevel::Warn);
log("database", "Verbindung zur Datenbank fehlgeschlagen!", LogLevel::Error);
}
Hilfsfunktionen
Für häufige Aufrufe stehen direkte Hilfsfunktionen zur Verfügung:
use logger_ctdra::{debug, error, info, warn};
fn run() {
info("service", "Dienst bereit");
debug("service", "Debug-Details");
warn("service", "Ressourcen fast erschöpft");
error("service", "Kritischer Fehler!");
}
Konfiguration des Logpfads
use logger_ctdra::set_log_dir;
use std::path::PathBuf;
fn init() {
// Individuelles Logverzeichnis vorgeben:
set_log_dir(PathBuf::from("/var/log/my-service"));
}
Entwicklung und Tests
# Überprüfen
cargo check --all-targets
# Tests ausführen
cargo test
# Release kompilieren
cargo build --release
# Crate paketieren
cargo package
Lizenz
Dieses Projekt ist unter der GNU General Public License v3.0 oder neuer lizenziert (GPL-3.0-or-later). Siehe LICENSE.