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;
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.
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]
});