2016-04-17 19 views
1

Dies sollte eine triviale Frage sein, aber ich denke nicht, um mich zu kümmern. Gibt es eine einfache Möglichkeit, alle meine console.log Ausgabe in eine Datei umzuleiten? console.log formatiert die bereitgestellten Objekte auf eine nette Weise und interagiert ordnungsgemäß mit Objekten, die keine trivialen JSONable-Objekte sind.Redirect console.log Ausgabe in Datei

Zum Beispiel, wenn ich

var myerr = new Error('There has been an error'); 
console.log(myerr); 

I

[Error: There has been an error.] 

erhalten Während, wenn ich nur

process.stdout.write(JSON.stringify(myerr)); 
tun

ich

{} 

Und wenn ich

process.stdout.write(myerr.toString()); 

ich

Error: There has been an error 

Also, wenn ich meine console.log mit einer Funktion außer Kraft setzen, die oben mit einem der Tricks auf ihre Argumente Schleifen und leitet die Ausgabe in eine Datei die Protokoll wird nicht genau gleich sein.

Also frage ich mich: Was macht console.log tun, um die Objekte zu verarbeiten, die es zur Verfügung gestellt wird, bevor sie an die Konsole ausgegeben werden? Es ruft nur .toString() auf jedes Objekt, wickelt Dinge mit [] und sendet alles an process.stdout.write? Oder macht es eine andere Art von Vorverarbeitung?

Antwort

3

Der Code von Console lautet:

Console.prototype.log = function() { 
    this._stdout.write(util.format.apply(null, arguments) + '\n'); 
}; 

Sie einfach tun können

const util = require('util'); 
process.stdout.write(util.format.apply(null, arguments) + '\n'); 
+0

Dies ist der komplette Code des Knotens/console.js auf [github] [1] [1]: https://github.com/nodejs/node/blob/master /lib/console.js – nicandris

4

ich simples so denken verwenden Linux-I/O-Umleitung. Führen Sie einfach Ihre Anwendung auf diese Weise:

node app.js > log.txt 

alle Ausgabenachrichten aus Ihrer App weitergeleitet

Verwandte Themen