39 lines
2.2 KiB
Markdown
39 lines
2.2 KiB
Markdown
<!-- file: kb_logging/README.md -->
|
||
<!-- version: 5 -->
|
||
|
||
# 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 d’admission 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 qu’aucune route n’accepte.
|
||
|
||
Les chemins relatifs sont résolus depuis la racine du workspace. L’ANSI est désactivé dans les formatters fichier et retiré une seconde fois par `StripAnsiMakeWriter` afin de nettoyer les messages provenant d’une WebView ou d’une 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 qu’une crate déclarant `tracing.workspace = true` possède exactement une constante conforme.
|
||
|
||
## Matrice de fichiers
|
||
|
||
Chaque profil actif configure :
|
||
|
||
```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 n’ajoutent pas les overrides verbeux des dépendances.
|
||
|
||
Le contrat détaillé se trouve dans `docs/LOGGING.md` et `docs/TRACING_CONTRACT.md`.
|