Solución:
Simplemente ejecute el script en su terminal de esta manera …
node script-file.js > log-file.txt
Esto le dice al shell que escriba la salida estándar del comando node script-file.js
a su archivo de registro en lugar del predeterminado, que lo está imprimiendo en la consola.
Esto se llama redirección y es muy poderoso. Digamos que desea escribir todos los errores en un archivo separado …
node script-file.js >log-file.txt 2>error-file.txt
Ahora todo console.log
están escritos a log-file.txt
y todo console.error
están escritos a error-file.txt
Usaría una biblioteca en lugar de reinventar la rueda. Busqué un log4j
-type library en npm, y se le ocurrió https://github.com/nomiddlename/log4js-node
si desea iniciar sesión en la consola y en un archivo:
var log4js = require('log4js');
log4js.configure({
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/cheese.log', category: 'cheese' }
]
});
ahora su código puede crear un nuevo registrador con
var logger = log4js.getLogger('cheese');
y usa el registrador en tu código
logger.warn('Cheese is quite smelly.');
logger.info('Cheese is Gouda.');
logger.debug('Cheese is not a food.');
Podrías intentar anular el incorporado console.log
hacer algo diferente.
var originalLog = console.log;
console.log = function(str){
originalLog(str);
// Your extra code
}
Sin embargo, esto coloca a la originalLog
en el ámbito principal, por lo que debería intentar envolverlo en una función. A esto se le llama cierre, y puede leer más sobre ellos aquí.
(function(){
var originalLog = console.log;
console.log = function(str){
originalLog(str);
// Your extra code
})();
Para escribir archivos, vea esta pregunta sobre el flujo de pila y para anular console.log
incluso mejor que la forma en que mostré, mira esto. La combinación de estas dos respuestas le dará la mejor solución posible.