2016-08-24 12 views
0

次のコードをコンソール出力からファイル出力に変換する手助けをしてもらえますか?私はロギングとNodeの非同期性に苦しんでいます。このスクリプトはコンソールでうまく動作しますが、ソートされた出力をファイル内の個々のサーバーセクションにパイプして、STDERRを別のファイルに移動したいとします。Node.JS - コンソールから出力をログ/エラーファイルに移動したい

var rexec = require('remote-exec'); 
var fs = require('fs'); 
var lineReader = require('line-reader'); 
var streamBuffers = require('stream-buffers'); 

var _ = require('lodash'); 

var conn_options = { 
    port: 22, 
    username: '*****', 
    privateKey: fs.readFileSync('R:/nodeJS/sshkey.priv') 
} 

// something that dumps out a bunch of data... 
var cmds = ['df'] 
var filename = 'servers.txt'; 

lineReader.eachLine(filename,function(line,last,cb){ 

    var buffer = new streamBuffers.WritableStreamBuffer(); 

    var my_conn_options = _.clone(conn_options); 


    rexec(line,cmds,my_conn_options,function(err){ 
     if (err) { 
      console.log(line, err); 
     } else { 
      console.log('>>>> Start: ' + line + '<<<<') 
      console.log(buffer.getContentsAsString()); 
      console.log('>>>> End: ' + line + '<<<<') 
     }; 

    }); 
    if (last) { 
     cb(false); // stop reading 
    } else { 
     cb(); 
    } 
}); 

答えて

1

助けるべきチェックこの例では、..

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; 
+0

ありがとうございました。それはうまくいくようです。 – Matt

関連する問題