184 votes

Journalisation de Node.js

Existe-t-il une bibliothèque qui m'aidera à gérer la journalisation dans mon application Node.Js ? Tout ce que je veux faire, c'est d'écrire tous les journaux dans un fichier et j'ai également besoin d'une option comme le déploiement du fichier après une certaine taille ou date.


J'ai incorporé log4js, j'essaie de garder tous les détails de la configuration dans un fichier et d'utiliser uniquement les méthodes dans d'autres fichiers d'application pour faciliter la maintenance. Mais cela ne fonctionne pas comme prévu. Voici ce que j'essaie de faire

var log4js = require('log4js'); 
log4js.clearAppenders()
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('test.log'), 'test');
var logger = log4js.getLogger('test');
logger.setLevel('ERROR');

var traceLogger = function (message) {
        logger.trace('message');
    };

var errorLogger = function (message) {
        logger.trace(message);
    };

exports.trace = traceLogger;
exports.error = errorLogger;

J'ai inclus ce fichier dans d'autres fichiers et j'ai essayé

log.error ("Hello Error Message");

Mais cela ne fonctionne pas. Y a-t-il un problème ?

1 votes

Log4js semble correct. vous avez mal défini le niveau d'erreur. cela devrait être : logger.setLevel(log4js.levels.ERROR) ;

203voto

Charlie Key Points 1236

Winston est une très bonne bibliothèque de journalisation. Vous pouvez écrire les journaux dans un fichier en l'utilisant.

Le code ressemblerait à quelque chose comme :

var winston = require('winston');

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/debug.log', json: false })
  ],
  exceptionHandlers: [
    new (winston.transports.Console)({ json: false, timestamp: true }),
    new winston.transports.File({ filename: __dirname + '/exceptions.log', json: false })
  ],
  exitOnError: false
});

module.exports = logger;

Vous pouvez alors l'utiliser comme :

var logger = require('./log');

logger.info('log to file');

5 votes

3 votes

J'ai utilisé Winston pendant longtemps. Il est devenu bogué et je l'ai abandonné au profit de npmlog.

8 votes

@tout le monde, il semble que Winston soit à nouveau entretenu... github.com/flatiron/winston/network

60voto

bluejamesbond Points 1937

SOLUTION LIGHEWEIGHT - MISE À JOUR AVEC ACCÈS WEB AUX LOGS

J'ai examiné de nombreux loggers, et je n'ai pas été en mesure de trouver une solution légère - j'ai donc décidé de faire une solution simple qui est postée sur github.

  • Sauvegarde du fichier qui est organisé par utilisateur, date, et niveau
  • Vous donne une jolie sortie (nous aimons tous cela)

J'espère que cela vous aidera.

SETUP

https://github.com/bluejamesbond/Scribe.js

PS : S'il y a des problèmes, j'apprécierais que vous les corrigiez et que vous fassiez une demande de téléchargement. Sinon, vous êtes plus que bienvenu pour poster un problème.

EXEMPLE DE VUE DU PANNEAU DE CONTRÔLE WEB

enter image description here

MENU DE SÉLECTION DES ÉCHANTILLONS

enter image description here

EXEMPLE D'AFFICHAGE DU JOURNAL WEB

enter image description here

EXEMPLE DE SORTIE VERS LA CONSOLE

enter image description here

CONFIGURATION DU RÉPERTOIRE DES ÉCHANTILLONS

enter image description here

EXEMPLE DE FICHIER DE SORTIE

enter image description here

7 votes

Cette bibliothèque n'est plus maintenue : github.com/bluejamesbond/

31voto

ThoQ Luong Points 416

Log4js est l'une des bibliothèques de journalisation les plus populaires pour les applications nodejs.

Il prend en charge de nombreuses fonctionnalités intéressantes :

  1. journalisation de la console en couleur
  2. remplacement des fonctions console.log du nœud (facultatif)
  3. apporteur de fichiers, avec roulement de journal basé sur la taille du fichier
  4. apporteur SMTP
  5. Appendice GELF
  6. apporteur hook.io
  7. L'appendice de Loggly
  8. appender multiprocess (utile lorsque vous avez des processus de travail)
  9. un enregistreur pour les serveurs connect/express
  10. mise en page et modèles de messages de journal configurables
  11. différents niveaux de journalisation pour différentes catégories de journaux (rendre certaines parties de votre application en tant que DEBUG, d'autres uniquement en tant qu'ERREURS, etc.)

Exemple :

  1. Fichier de configuration :

    {"appenders": [
        {
            "type": "console",
            "layout": {
                "type": "pattern",
                "pattern": "%m"
            },
            "category": "app"
        },{
            "category": "test-file-appender",
            "type": "file",
            "filename": "log_file.log",
            "maxLogSize": 10240,
            "backups": 3,
            "layout": {
                "type": "pattern",
                "pattern": "%d{dd/MM hh:mm} %-5p %m"
            }
        }
    ],
    "replaceConsole": true }
  2. Configurer et utiliser

    var log4js = require( "log4js" );
    log4js.configure( "./config/log4js.json" );
    var logger = log4js.getLogger( "test-file-appender" );
    // log4js.getLogger("app") will return logger that prints log to the console
    logger.debug("Hello log4js");// store log in file

1 votes

Une autre fonctionnalité intéressante : peut afficher le numéro de fichier et de ligne, par ex. myfile.js:635 - my log line

11voto

samant Points 445

Vous pouvez également utiliser npmlog par issacs, recommandé dans https://npmjs.org/doc/coding-style.html .

Vous pouvez trouver ce module ici https://github.com/isaacs/npmlog

3voto

3on Points 3489

Est-ce que c'est ce que vous recherchez ?

http://nodejs.org/api/all.html#all_util_log_string

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X