Files
khadhroony-bot3/kb-logging
2026-07-24 22:52:37 +02:00
..
2026-07-24 22:52:37 +02:00
2026-07-24 22:01:07 +02:00
2026-07-24 22:01:07 +02:00

kb-logging

kb-logging initialise le routage tracing commun du workspace.

Responsabilité

Le crate transforme la configuration du profil actif en layers tracing_subscriber et route les événements vers la console, les fichiers humains et les fichiers JSONL. Le LoggingGuard retourné par init_logging doit rester vivant pendant toute la durée du processus afin de conserver les writers non bloquants.

Les décisions de niveau et de target sont appliquées par chaque writer de route, avec un seul filtre dadmission agrégé en amont. Elles ne créent pas un Filtered layer par sortie : tracing-subscriber réserve seulement 64 identifiants de filtres par subscriber, tandis que la matrice complète comporte désormais plus de 64 routes activables. Le filtrage writer conserve les niveaux, targets exacts, préfixes et overrides configurés sans imposer cette limite au nombre de sorties ; le filtre agrégé évite de formater un événement quaucune route naccepte.

Les chemins relatifs sont résolus depuis la racine du workspace. LANSI est désactivé dans les formatters fichier et retiré une seconde fois par StripAnsiMakeWriter afin de nettoyer les messages provenant dune WebView ou dune dépendance externe.

Contrat de targets

kb-logging utilise le target canonique kb-logging, défini dans src/constants.rs. Chaque crate qui dépend de tracing doit suivre le même contrat avec son propre nom Cargo.

Le test every_tracing_crate_has_one_canonical_target_constant inspecte les manifests du workspace et vérifie quune crate déclarant tracing.workspace = true possède exactement une constante conforme.

Matrice de fichiers

Chaque profil actif configure :

logs/<profile>/debug.log
logs/<profile>/info.log
logs/<profile>/error.jsonl
logs/<profile>/app.log
logs/<profile>/<crate>/debug.log
logs/<profile>/<crate>/info.log
logs/<profile>/<crate>/error.jsonl

Les fichiers sont en rotation quotidienne. Les routes debug et info sont cumulatives ; les routes error.jsonl sont forcées au niveau error et najoutent pas les overrides verbeux des dépendances.

Le contrat détaillé se trouve dans docs/LOGGING.md et docs/TRACING_CONTRACT.md.