web-dev-qa-db-fra.com

Enregistrement Node.js

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


J'ai incorporé log4js en essayant de conserver tous les détails de la configuration dans un seul fichier et d'utiliser uniquement les méthodes des 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 ça ne fonctionne pas. Y a-t-il quelque chose qui cloche dans cela?

171
syv

Winston est une très bonne bibliothèque de journalisation. Vous pouvez écrire des déconnexions 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 ensuite utiliser ceci comme:

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

logger.info('log to file');
191
Charlie Key

Scribe.JS Logger Léger

J'ai parcouru de nombreux enregistreurs et je ne pouvais pas trouver de solution légère. J'ai donc décidé de créer une solution simple, publiée sur github.

  • Enregistre le fichier qui est organisé par utilisateur, date et niveau
  • Vous donne une jolie sortie (on aime tous ça)
  • Interface HTML facile à utiliser

J'espère que cela vous aide.

Démo en ligne

http://bluejamesbond.github.io/Scribe.js/

Accès Web sécurisé aux journaux

A

Imprime aussi du texte sur la console!

A

L'accès à Internet

A

Github

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

59
Mathew Kurian

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

Il supporte de nombreuses fonctionnalités intéressantes:

  1. Consignation de la console colorée
  2. Remplacement des fonctions console.log du nœud (facultatif)
  3. Fichier appender, avec journal de roulement basé sur la taille du fichier
  4. SMTP, GELF, hook.io, appender loggly
  5. Appender multi-processus (utile lorsque vous avez des processus de travail)
  6. Un enregistreur pour les serveurs connect/express
  7. Disposition/modèles de messages de journal configurables
  8. Différents niveaux de journalisation pour différentes catégories de journal (certaines parties de votre journal d’application sont définies comme DEBUG, d’autres uniquement ERREURS, etc.)

Exemple:

  1. Installation: npm install log4js

  2. Configuration (./config/log4js.json):

    {"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 }
    
  3. Usage:

    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
    
29
Tho

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

11
sam100rav

Le "logger.setLevel ('ERROR');" est la cause du problème. Je ne comprends pas pourquoi, mais lorsque je le mets sur autre chose que "ALL", rien n’est imprimé dans le fichier. J'ai fouillé un peu et modifié votre code. Cela fonctionne bien pour moi. J'ai créé deux fichiers.

logger.js

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 getLogger = function() {
   return logger;
};

exports.logger = getLogger();

logger.test.js

var logger = require('./logger.js')

var log = logger.logger;

log.error("ERROR message");
log.trace("TRACE message");

Lorsque je lance "node logger.test.js", je ne vois que le "message d'erreur" dans le fichier test.log. Si je change le niveau en "TRACE", les deux lignes sont imprimées sur test.log.

6

Winston est un choix judicieux pour la plupart des développeurs. J'utilise Winston depuis longtemps. Récemment, j'ai utilisé winston with avec papertrail, ce qui porte la journalisation de l'application au niveau supérieur.

Voici une belle capture d'écran de leur site.

enter image description here

Comment son utilité

  • vous pouvez gérer les journaux de différents systèmes en un seul endroit. Cela peut être très utile lorsque vous avez deux serveurs en communication et que vous pouvez voir les journaux des deux sur place.

  • Les journaux sont en direct. vous pouvez voir les journaux en temps réel de votre serveur de production.

  • Recherche et filtre puissants

  • vous pouvez créer des alertes pour vous envoyer un courrier électronique s'il rencontre un texte spécifique dans le journal.

et vous pouvez trouver plus http://help.papertrailapp.com/kb/how-it-works/event-viewer/

Une configuration simple à l'aide de winston , winston-express et winston-papertrail modules de nœud.

_import winston from 'winston';
import expressWinston from 'express-winston';
//
// Requiring `winston-papertrail` will expose
// `winston.transports.Papertrail`
//
require('winston-papertrail').Papertrail;
// create winston transport for Papertrail
var winstonPapertrail = new winston.transports.Papertrail({
  Host: 'logsX.papertrailapp.com',
  port: XXXXX
});
app.use(expressWinston.logger({
  transports: [winstonPapertrail],
  meta: true, // optional: control whether you want to log the meta data about the request (default to true)
  msg: "HTTP {{req.method}} {{req.url}}", // optional: customize the default logging message. E.g. "{{res.statusCode}} {{req.method}} {{res.responseTime}}ms {{req.url}}"
  expressFormat: true, // Use the default Express/morgan request formatting. Enabling this will override any msg if true. Will only output colors with colorize set to true
  colorize: true, // Color the text and status code, using the Express/morgan color palette (text: gray, status: default green, 3XX cyan, 4XX yellow, 5XX red).
  ignoreRoute: function (req, res) { return false; } // optional: allows to skip some log messages based on request and/or response
}));
_

J'espère que cela aide quelqu'un à gérer ses journaux!

3
vinesh

Un module 'nodejslogger' peut être utilisé pour une journalisation simple. Il a trois niveaux de journalisation (INFO, ERREUR, DÉBOGAGE)

var logger = require('nodejslogger')
logger.init({"file":"output-file", "mode":"DIE"})

D: Débogage, I: Info, E: Erreur

logger.debug("Debug logs")
logger.info("Info logs")
logger.error("Error logs")

Le module est accessible à l’adresse suivante: https://www.npmjs.com/package/nodejslogger

2
rohit kamal

Observez que errorLogger est un wrapper autour de logger.trace. Mais le niveau de journalisation est ERROR alors logger.trace ne consignera pas son message dans les appenders de logger.

Le correctif consiste à changer logger.trace en logger.error dans le corps de errorLogger.

0
Roland Maio