@mostajs/logger
v0.1.0
Published
Primitive N0 de journalisation structurée : format canonique LogEntry (JSON-lines) + émetteur multi-driver (console/mémoire/flux). Consommé par @mostajs/audit (conformité) et @mostajs/qa-engine (QA). Statut : proposition (cas C).
Maintainers
Readme
@mostajs/logger
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later
Niveau : N0 (primitif) · Statut : proposition (cas C — voir docs/00-CARTOGRAPHIE-ET-PROPOSITION.md)
Primitive de journalisation structurée de l'écosystème @mostajs/* : un format
canonique LogEntry (JSON-lines) et un émetteur multi-driver. Le format vit ici
(source unique) ; @mostajs/audit (conformité) et @mostajs/qa-engine (QA) le consomment.
Pourquoi pas dans @mostajs/audit ?
audit est un journal de conformité (qui/quoi/quand, RGPD) — un consommateur de logs,
pas leur format généraliste. Fusionner violerait la responsabilité unique. logger (N0) est
la couche basse partagée : logger ← audit, logger ← qa-engine (dépendance descendante).
Installation
npm i @mostajs/loggerExemple minimal
import { createLogger, memoryDriver } from '@mostajs/logger';
const buf = memoryDriver();
const log = createLogger({ level: 'debug', drivers: [buf], base: { app: 'ticketflow' } });
log.info('Serveur démarré', { module: 'boot', event: 'server.started' });
log.child({ module: 'queue' }).error('Ticket introuvable', {
requestId: 'r-142', error: { message: 'Ticket introuvable : MG1', code: 'E_NOT_FOUND' },
});
console.log(buf.entries.length); // 2API
| Export | Rôle |
|--------|------|
| createLogger(config?) | crée un Logger (log/debug/info/warn/error/fatal/child) |
| LogEntry, LogLevel | types du format canonique |
| consoleDriver | driver console (stderr pour warn+) |
| memoryDriver() | driver mémoire (.entries) — tests/buffer |
| formatJsonl(entry) / parseJsonl(raw) | (dé)sérialisation JSON-lines |
config : { level?, drivers?, base?, now? } — now = horloge injectable (tests déterministes).
DB-agnostique : la persistance est un driver fourni par le consommateur.
Statut
Proposition : squelette d'API stable + drivers de base. Suite (après validation) : livrables
§9 (état de l'art logging structuré, audit, plan…) et refactor (extraire LogEntry de
@mostajs/qa-engine vers ici ; audit adopte le format).
