Vous lisez la documentation de la version 0.6, qui n'est pas la dernière publiée.
Lire cette page dans la documentation la plus récente (v1.0)
Espaces de noms et filtrage
Filtrage à l'exécution et espaces de noms
Au-delà de la liste blanche levels / minLevel (au build), $debug embarque des contrôles à l'exécution pour changer ce qui s'affiche sans toucher la config ni redémarrer — et pour délimiter les logs par espace de noms.
const auth = $debug.ns("auth"); // logger scopé, tague chaque appel [auth]
auth("info", "login ok"); // → MARS-TECH Info [auth] - login ok
auth("debug", payload, { tag: "token" }); // l'espace de noms devient "auth:token"
$debug.enable("auth:*,-auth:token"); // affiche auth:* sauf auth:token
$debug.disable(); // coupe tout
$debug.setLevel("warning"); // relève le seuil (dans la limite du build)
$debug.setLevel(null); // efface la surcharge de niveau à l'exécutionL'espace de noms est le tag — $debug("info", "x", { tag: "auth" }) et $debug.ns("auth")("info", "x") filtrent à l'identique. Sans filtre actif, tout s'affiche (comportement inchangé).
Syntaxe du filtre (à la manière du paquet debug) : termes séparés par virgule ou espace, joker *, - en tête pour exclure (les exclusions priment).
D'où vient le filtre, par priorité décroissante :
| Surface | Filtre d'espace de noms | Seuil de niveau |
|---|---|---|
| Navigateur | paramètre d'URL ?mt-debug=auth:* → localStorage["mt-debug"] | ?mt-debug-level= → localStorage["mt-debug-level"] |
| SSR/Node | variable d'environnement MT_DEBUG=auth:* | variable d'environnement MT_DEBUG_LEVEL=warning |
enable / disable / setLevel persistent dans localStorage côté navigateur (le choix survit aux rechargements) ; côté serveur, ils s'appliquent pour la durée du processus. Le filtrage à l'exécution est borné par le jeu de niveaux du build — vous pouvez masquer des niveaux compilés, pas ressusciter ceux qui ont été retirés.
Filtrage par préfixe
Un second axe, orthogonal, filtre par le préfixe affiché — la tête de chaque ligne (MARS-TECH par défaut). Avec libraryPrefix, un préfixe est une identité par source : c'est ainsi qu'on coupe une bibliothèque bavarde ou qu'on isole les logs de son application :
$debug.setPrefixFilter("MyApp"); // n'afficher que le préfixe "MyApp"
$debug.setPrefixFilter("-NoisyLib"); // masquer tout ce qui vient de "NoisyLib"
$debug.setPrefixFilter(null); // effacer → tous les préfixes passentMême syntaxe que le filtre d'espaces de noms, à la manière de debug (*, séparation par virgule ou espace, - en tête pour exclure). Sources, par priorité décroissante :
| Surface | Filtre de préfixe |
|---|---|
| Navigateur | paramètre d'URL ?mt-debug-prefix=MyApp → localStorage["mt-debug-prefix"] |
| SSR/Node | variable d'environnement MT_DEBUG_PREFIX=MyApp |
| Défaut au build | option du plugin mtDebug({ prefixFilter: "-NoisyLib" }) |
Côté navigateur, setPrefixFilter persiste dans localStorage["mt-debug-prefix"], comme les autres contrôles à l'exécution. Le défaut au build est l'option prefixFilter.
Comparé au préfixe effectif de chaque appel (options.prefix si défini, sinon le prefix configuré). Sous testLog, le journaliseur des tests, qui écrit dans la console, le respecte aussi. Réserve : les fonctions utilitaires (time/count/group) portent toujours le prefix configuré, donc la sortie d'une fonction utilitaire de bibliothèque est filtrée sous le préfixe de l'application, pas celui de la bibliothèque.