v0.1.0-pre.069

This commit is contained in:
2026-07-31 13:25:26 +02:00
parent f23ecd6675
commit 46071b7fed
21 changed files with 799 additions and 410 deletions

View File

@@ -1,38 +1,38 @@
<!-- file: kb-logging/README.md -->
<!-- version: 5 -->
<!-- version: 3 -->
# kb-logging
`kb-logging` initialise le routage `tracing` commun du workspace.
`kb-logging` initialise le subscriber global `tracing` à partir dune configuration de routes explicites vers la console ou des fichiers.
## Responsabilité
## Responsabilités
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.
- sélectionner les routes activées ;
- appliquer niveaux, targets exactes et préfixes wildcard ;
- créer les writers non bloquants ;
- gérer les formats human, compact, pretty et JSON ;
- gérer les rotations de fichiers supportées ;
- conserver les `WorkerGuard` pendant toute la durée du processus.
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.
## Hors périmètre
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.
La crate ne charge pas le fichier de configuration et ne définit pas les targets des autres crates. `kb-config` fournit les valeurs et chaque crate publie son propre target canonique.
## Contrat de targets
## API publique
`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.
- `init_logging` initialise le subscriber global ;
- `LoggingConfig`, `LogTargetConfig` et `LogTargetFilterConfig` décrivent les routes ;
- `LoggingGuard` maintient les writers et expose les routes installées ;
- `tracing_target` retourne le target canonique de la crate ;
- `LogFileRoute` reste disponible pour les anciens appelants file-only.
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.
## Statut
## Matrice de fichiers
Linitialisation multi-routes est fonctionnelle. Elle échoue explicitement si aucune route nest activée ou si le subscriber global a déjà été initialisé.
Chaque profil actif configure :
## Documents
```text
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`.
- [Utilisation](USAGE.md)
- [Travaux restants](TODO.md)
- [Historique](CHANGELOG.md)
- [Guide de configuration](../kb-config/USAGE.md)