v0.1.3-pre.005

This commit is contained in:
2026-08-15 20:22:02 +02:00
parent 29660fd9f0
commit 063b24ee1c
17 changed files with 957 additions and 244 deletions

View File

@@ -1,20 +1,33 @@
<!-- file: crates/ksp-logging-lib/TODO.md -->
<!-- version: 3 -->
<!-- version: 4 -->
# TODO ksp-logging-lib
## À fermer pendant `0.1.3`
`0.1.3-pre.004` expose désormais le modèle public multi-output. La tranche runtime suivante doit encore :
`0.1.3-pre.005` active le runtime multi-sink pour les dimensions disponibles directement dans les métadonnées `tracing` : niveau et target.
- activer simultanément zéro, un ou plusieurs fichiers ;
- appliquer réellement `OutputFilter` par sink sur niveau, target et domain ;
- appliquer `LogFormat::{Human, Compact, Pretty, Json}` par sink ;
- appliquer l'ANSI console configurable tout en gardant les fichiers sans séquences ANSI ;
- généraliser les writers/guards et compteurs de lignes abandonnées par output sans perdre la vue agrégée utile ;
- conserver le subscriber global unique, le takeover KSP et le hot reload transactionnel.
La tranche Logging suivante doit encore :
Tant que cette tranche runtime n'est pas livrée, `initialize/reinitialize` refusent explicitement les capacités du nouveau contrat qu'ils ne savent pas encore appliquer.
- appliquer réellement `OutputFilter.domains[]` à partir du champ structuré `domain` ;
- définir l'héritage du domain pour les events émis dans un span lorsqu'ils ne portent pas eux-mêmes le champ ;
- conserver une sémantique cohérente pour les événements de lifecycle de span ;
- couvrir ce routing par des tests dédiés avant de figer `std.logging.schema.json`.
Tant que cette tranche n'est pas livrée, un output actif avec `domains[] != ["*"]` est refusé explicitement par `initialize/reinitialize`.
## Capacités désormais actives
Le runtime supporte maintenant :
- zéro, un ou plusieurs outputs fichier simultanés ;
- une console indépendante ;
- routing par niveau et target pour chaque output ;
- `Human`, `Compact`, `Pretty` et `Json` ;
- ANSI console configurable et fichiers persistants sans ANSI ;
- guards non bloquants indépendants ;
- compteurs agrégés et compteurs cumulatifs par `output_id` fichier ;
- hot reload transactionnel du groupe de sinks.
## Capacités différées