Configure Node.js para iniciar sesión en un archivo en lugar de en la consola
¿Puedo configurar console.log
para que los registros se escriban en un archivo en lugar de imprimirse en la consola?
También puedes simplemente sobrecargar la función predeterminada console.log:
var fs = require('fs');
var util = require('util');
var log_file = fs.createWriteStream(__dirname + '/debug.log', {flags : 'w'});
var log_stdout = process.stdout;
console.log = function(d) { //
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
};
El ejemplo anterior se registrará en debug.log y stdout.
Editar: consulte la versión multiparamétrica de Clément también en esta página.
Actualización 2013: esto se escribió en torno a Node v0.2 y v0.4; Ahora existen utilidades mucho mejores para el registro. Recomiendo mucho a Winston .
Actualización de finales de 2013: todavía usamos winston, pero ahora con una biblioteca de registrador para ajustar la funcionalidad al registro de objetos personalizados y formato. Aquí hay una muestra de nuestro logger.js https://gist.github.com/rtgibbons/7354879
Debería ser tan simple como esto.
var access = fs.createWriteStream(dir + '/node.access.log', { flags: 'a' })
, error = fs.createWriteStream(dir + '/node.error.log', { flags: 'a' });
// redirect stdout / stderr
proc.stdout.pipe(access);
proc.stderr.pipe(error);
Si está buscando algo en producción, Winston es probablemente la mejor opción.
Si solo desea hacer cosas de desarrollo rápidamente, envíelo directamente a un archivo (creo que esto solo funciona para sistemas *nix):
nohup node simple-server.js > output.log &
A menudo uso muchos argumentos para console.log() y console.error() , por lo que mi solución sería:
var fs = require('fs');
var util = require('util');
var logFile = fs.createWriteStream('log.txt', { flags: 'a' });
// Or 'w' to truncate the file every time the process starts.
var logStdout = process.stdout;
console.log = function () {
logFile.write(util.format.apply(null, arguments) + '\n');
logStdout.write(util.format.apply(null, arguments) + '\n');
}
console.error = console.log;