ConsoleLogger
ConsoleLogger
Présentation
ConsoleLogger est une classe utilitaire dédiée à la journalisation structurée dans une application Node.js.
Elle fournit une abstraction au-dessus de console.log, console.warn et console.error, avec :
- un préfixe normalisé (heure, instance, tag),
- une gestion centralisée du niveau de log,
- un formatage intelligent des messages (objets, tableaux, erreurs),
- une API fluide orientée développeur.
Cette classe est particulièrement adaptée aux services, plugins, modules ou classes cœur d’une application.
Objectifs
- Uniformiser les logs dans toute l’application
- Identifier rapidement la source d’un message
- Filtrer les logs selon le niveau (All / Warn / Error)
- Améliorer la lisibilité des erreurs et objets complexes
Signature de la classe
export default class ConsoleLogger {
constructor(instanceName: string)
}
Initialisation
const logger = new ConsoleLogger("I18n");
instanceName représente la source logique du log (classe, module, service).
Format des logs
Préfixe
Chaque message est précédé d’un préfixe standardisé :
[HH:MM:SS] [InstanceName] [Tag]
Exemple :
[14:32:08] [I18n] [Loader] Fichier chargé avec succès
Le tag est optionnel.
Gestion des tags
tag(tag: string): this
Permet d’ajouter un contexte secondaire au logger.
logger.tag("Loader").log("Initialisation terminée");
Conseil
La méthode retourne this, ce qui permet le chaînage.
API publique
log
log(...message: any[]): void
Écrit un message de log standard, sans filtrage de niveau.
warn
warn(...message: any[]): void
Écrit un message d’avertissement si le niveau de log l’autorise.
error
error(...message: any[]): void
Écrit un message d’erreur si le niveau de log l’autorise.
Niveaux de log
Configuration globale
ConsoleLogger.SetLogLevel("All"); // Tous les logs
ConsoleLogger.SetLogLevel("Warn"); // Warn + Error
ConsoleLogger.SetLogLevel("Error"); // Error uniquement
Correspondance interne
| Niveau | Valeur | Comportement |
|---|---|---|
All | 0 | log, warn, error |
Warn | 1 | warn, error |
Error | 2 | error uniquement |
Avertissement
Le niveau de log est global à toute l’application.
Formatage intelligent des messages
La méthode interne Log() adapte automatiquement l’affichage selon le type du message.
Chaînes et types primitifs
logger.log("Serveur démarré");
logger.log(42, true);
[12:01:22] [Server] Serveur démarré
Objets
logger.log({ port: 3000, secure: false });
Affichage JSON formaté :
{
"port": 3000,
"secure": false
}
Tableaux
logger.log(["a", "b", "c"]);
[
"a",
"b",
"c"
]
Fonctions et symboles
Convertis automatiquement via toString().
Gestion des erreurs
try {
throw new Error("Connexion impossible");
} catch (e) {
logger.error(e);
}
Résultat :
- nom de l’erreur
- message
- stack trace sans la première ligne
Conseil
La suppression de la première ligne rend le stack plus lisible et exploitable.
Méthodes internes (non publiques)
getPrefix()
Construit le préfixe [timestamp][instance][tag].
getTimeStamp()
Retourne l’heure courante au format HH:MM:SS.
Log(functionLog, ...message)
Méthode centrale :
- choisit le format selon le type
- appelle
console.log,console.warnouconsole.error - garantit une sortie cohérente
Bonnes pratiques
- Créer un logger par classe ou module
- Utiliser les tags pour les sous-contextes
- Ne pas changer le niveau de log dynamiquement en production
- Préférer
warnpour les erreurs récupérables - Réserver
erroraux états critiques
Exemple complet
const logger = new ConsoleLogger("AuthService");
logger
.tag("Init")
.log("Service initialisé");
logger.warn("Token expiré");
logger.error(new Error("Accès refusé"));
Conclusion
ConsoleLogger est une solution de journalisation simple, robuste et extensible, pensée pour des applications Node.js modulaires. Elle améliore significativement la lisibilité des logs et facilite le débogage sans introduire de dépendances externes.