web-dev-qa-db-fra.com

Journalisation de stdout et stderr de Node

J'utilise le code passe-partout de mean.io et je démarre mon serveur avec la commande:

node server.js

Comment enregistrer stdout et stderr de mon application Express?

Voici mon fichier server.js:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    passport = require('passport'),
    logger = require('mean-logger');

/**
 * Main application entry file.
 * Please note that the order of loading is important.
 */

// Initializing system variables
var config = require('./server/config/config');
var db = mongoose.connect(config.db);

// Bootstrap Models, Dependencies, Routes and the app as an express app
var app = require('./server/config/system/bootstrap')(passport, db);

// Start the app by listening on <port>, optional hostname
app.listen(config.port, config.hostname);
console.log('Mean app started on port ' + config.port + ' (' + process.env.NODE_ENV + ')');

// Initializing logger
logger.init(app, passport, mongoose);

// Expose app
exports = module.exports = app;
24
raju

Et ça?

console.log("I will goto the STDOUT");
console.error("I will goto the STDERR");

Remarque: ces deux fonctions ajoutent automatiquement une nouvelle ligne à votre entrée.

Si vous ne souhaitez pas que ces nouvelles lignes soient ajoutées à votre saisie, procédez comme suit

process.stdout.write("I will goto the STDOUT")
process.stderr.write("I will goto the STDERR")

Tous les deux process.stdout et process.stderr sont des flux, vous pouvez donc même y rediriger un flux. Voir Documents Node.js sur les flux pour plus d'informations.

46
Steel Brain

Vous pouvez le faire en écrivant sur les flux stdout et stderr

process.stdout.write('Hello')

ou

process.stderr.write('Error')

Mieux sera d'utiliser un module de journalisation tiers comme winston ou bunyan

9
ashu

La seule façon de penser à cela est de générer un child process (comme l'appel système fork), qui vous permet ensuite de "diriger" la sortie de stderr, stdout vers des fichiers.

var out = fs.openSync('./output.log', 'a')
  , err = fs.openSync('./error.log', 'a');

require('child_process').spawn('./server', [], {
    detached    : true,
    stdio       : ['ignore', out, err]
});
4
Ryan