# ks-logging `ks-logging` possède le contrat logging indépendant du workspace et initialise le subscriber global `tracing` à partir du profil logging sélectionné. ## Responsabilités - charger `logging.config.json` et résoudre ses placeholders d’environnement ; - valider `config/schemas/logging.config.schema.json` ; - sélectionner un profil logging indépendamment du profil applicatif ; - posséder `LoggingConfig`, `LogTargetConfig` et `LogTargetFilterConfig` ; - sélectionner les routes activées ; - appliquer niveaux, targets exactes et préfixes wildcard ; - créer les writers non bloquants et gérer les formats/rotations ; - conserver les `WorkerGuard` pendant toute la durée du processus. ## Relations `ks-logging` dépend de `ks-config` uniquement pour le chargement du fichier `.env` et la résolution générique `${KS_*}` / `${KB_*}`. `ks-config` ne dépend pas de `ks-logging` et ne duplique aucun type logging. Le desktop lit le chemin `logging` et le `logging_profile` depuis `config/kb-app-demo-desktop.default.config.json`, charge le document logging puis transmet le profil explicitement sélectionné à `init_logging`. ## API publique - `read_logging_json_file_with_environment` charge le document logging ; - `parse_logging_json` et `validate_logging_json_schema` valident le format ; - `active_logging_profile` sélectionne le profil autonome actif et `logging_profile` résout un profil explicitement nommé par une composition ; - `LoggingConfigDocument` et `LoggingProfileConfig` décrivent le document ; - `LoggingConfig`, `LogTargetConfig` et `LogTargetFilterConfig` décrivent le runtime ; - `init_logging` initialise le subscriber global ; - `LoggingGuard` maintient les writers ; - `tracing_target` retourne le target canonique de la crate. ## Statut Le split config/logging est fonctionnel. Les profils logging sont indépendants des profils applicatifs et les routes existantes restent conservées dans `config/logging.config.json`. ## Documents - [Utilisation](USAGE.md) - [Travaux restants](TODO.md) - [Historique](CHANGELOG.md) - [Configuration locale](../config/README.md)