web-dev-qa-db-fra.com

Vous connecter à express js dans un fichier de sortie?

Quelle est la meilleure façon de connecter mon serveur Web express js? Le express.logger () intégré affiche simplement les journaux à l'écran. Puis-je également les enregistrer dans un fichier dans le dossier/log? L'enregistreur actuel enregistre également automatiquement la demande et les réponses. Je dois enregistrer certaines données d'application dans les fichiers journaux. Cela peut-il être fait en utilisant express.logger?

Cordialement, Lalith

60
Lalith

Regardez le middleware de connexion qui exprime s'étend. Express.logger () est le même que connect.logger ():

http://expressjs.com/api.html#middleware

http://www.senchalabs.org/connect/logger.html

L'enregistreur a une option de flux qui peut être définie où vous voulez que la sortie aille. Par défaut, il l'envoie à stdout. Vous pouvez également spécifier le format de journal que vous souhaitez utiliser.

47
Chad Williams

Pour envoyer les journaux express ou de connexion à un fichier, utilisez writeStream de Node. Par exemple, pour envoyer les journaux express à ./ myLogFile.log :

ouvrez le flux vers votre fichier en mode ajout avec:

var logFile = fs.createWriteStream('./myLogFile.log', {flags: 'a'}); //use {flags: 'w'} to open in write mode

puis, dans votre configuration express, utilisez:

app.use(express.logger({stream: logFile}));

devrait également fonctionner pour connect.logger.

71
Did

Vous devriez essayer winston

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.Console)(),
    new (winston.transports.File)({ filename: 'somefile.log' })
  ]
});
20
generalhenry

winston est un peu idiot, la journalisation multi-transport == tee (1), ou juste suivre le fichier et transférer les données, facile comme bonjour

8
tjholowaychuk

Utilisez log4js:

var log4js = require('log4js');
log4js.configure({
    appenders: [{type: 'console'},
                {type: 'file', filename: 'express.log', category: 'dev'}]
});

var logger = log4js.getLogger('dev');
logger.setLevel('DEBUG');

app.use(log4js.connectLogger(logger, {level: log4js.levels.DEBUG}));
8
elwarren

Pour la journalisation des requêtes HTTP: https://github.com/expressjs/morgan#write-logs-to-a-file

var express = require('express')
var fs = require('fs')
var morgan = require('morgan')

var app = express()

// create a write stream (in append mode)
var accessLogStream = fs.createWriteStream(__dirname + '/access.log', {flags: 'a'})

// setup the logger
app.use(morgan('combined', {stream: accessLogStream}))

app.get('/', function (req, res) {
  res.send('hello, world!')
})
4
neurosnap

vous devriez essayer le cluster http://learnboost.github.com/cluster/ pour Node. Utilisez express pour créer l'application, tandis que le cluster prend en charge les autres tâches, y compris la journalisation.

  1. app.use (express.logger ()); // dans vos applications express, ex: app.js
  2. cluster.use (cluster.logger ("journaux")); // dans votre serveur de cluster, ex: server.js
4
Len Xu