2017-05-23 2 views
0

Ich führe mongodump Befehl von Nodejs child_process.Knoten Child_process gibt gültige Ausgabe in stderr für Mongodump

habe ich versucht, sowohl exec und spawn, aber der Fortschritt durch mongodump gedruckt wird, um die data Falle stderr anstelle von stdout

var exec = require('child_process').exec, 
    ls = exec('mongodump --gzip --archive="/home/test-machine/test.archive" --db myDB'); 

ls.stdout.on('data', function (data) { 
    console.log('stdout: ' + data.toString()); 
}); 

ls.stderr.on('data', function (data) { 
    console.log('stderr: ' + data.toString()); 
}); 

ls.on('exit', function (code) { 
    console.log('child process exited with code ' + code.toString()); 
}); 

Die mongodump nicht abstürzt oder wirft einen Fehler trifft, seine, wie es die Ausführung sollte. Aber irgendwie NodeJS wird die Ausgabe als stderr Behandlung

Antwort

0

mongodump schreibt Log-Meldungen zu stderr, was nicht sehr ungewöhnlich, obwohl es macht die Ausgabe für Fehler ein bisschen schwieriger Parsen, weil Sie manuell die Fehlermeldungen herauszufiltern müssen.

+0

warum sie das tun? Du hast gesagt, dass es nicht ungewöhnlich ist, kannst du mir bitte sagen, warum ist das so? –

+1

'mongodump' hat eine Option, um nach' stdout' zu dumpen, also würden Protokollmeldungen dies stören, daher die Verwendung von 'stderr'. Viele Tools, die ihre Ausgabe in "stdout" schreiben (oder eine Option dafür haben), verwenden diese Konvention. – robertklep

Verwandte Themen