Dans notre api qui utilise l’API Active Campaign, nous souhaitons pouvoir logger tout ce qu’il se passe sur notre serveur : pour débugger, mais surtout pour la mise en production prévue très bientôt.
Plusieurs modules sont à notre disposition :
Utilisation de log4js
Première étape : installation
npm install log4js
Utilisation de log4js dans votre projet node
Ici, l’utilisation est assez simple :
- Appel du module : const log4js = require(‘log4js’);
- Création de l’instance : const logger = log4js.getLogger(); (ici, on peut passer un nom de logger, comme ‘app »’).
- Définition du niveau de log : logger.level = ‘debug’;
- Enregistrement d’une ligne de log : logger.debug(‘une info’);
Configuration du log4js
Pour choisir où écrire (console, fichier), il va être être intéressant de configurer notre logger.
Nous avons ici deux choix :
- Via le code
- Via un fichier de configuration json.
Nous préférons le fichier de configuration
Créez un fichier de configuration log4js.json et placez-le dans un dossier config.
Configuration dans un projet express
Il nous reste plus qu’à l’appeler dans le moteur express :
app.use(log4js.connectLogger(log4js.getLogger(« http »), { level: ‘auto’ }));
Cela remplace morgan proposé par express, par défaut.
NOTE: ici, nous avons deux logger : un dédié pour les requêtes htp : “http” et un autre pour le log autre “app”.
TIP : comment passer notre logger dans toute l’application ?
Si nous ne souhaitons pas configurer à chaque module notre log4js, il est intéressant de l’initialiser une fois et le passer à express.
Comment faire ? Nous avons deux pistes :
- Utilisation du global de node.js : global.myvar. Pratique, mais commun vraiment à toute l’application.
- Profiter du locals proposer par Express 4 : app.locals.logger = log4js.getLogger();