簡體   English   中英

在沒有其他模塊的情況下將node.js登錄到文件

[英]Logging in node.js to a file, without another module

我正在將節點應用程序作為守護程序運行。 在調試守護程序時,我需要查看輸出,因此我想將stdout和stderr重定向到文件。

我希望我可以像在Python或C中那樣重新分配stdoutstderr

fs = require('fs');
process.stdout = fs.openSync('/var/log/foo', 'w');
process.stderr = process.stdout;
console.log('hello');

當我直接運行腳本時,“ hello”將打印到控制台! 當然,當我在后台運行時,在控制台(當然)或/var/log/foo都看不到輸出。

我不需要或不需要復雜的日志記錄。 我只需要查看節點已經提供的內置消息。

console對象在首次創建時會獲取對process.stdoutstderr的引用。
(您可以在源代碼中看到它)。

以后重新分配它們不會影響console

重定向這些流的通常方法是使用重定向的流啟動進程。

另外,您可以覆蓋console方法並使它們寫入文件。

此問題類似,您可以覆蓋從console.log 調用的 process.stdout.write

var fs = require('fs');
var oldWrite = process.stdout.write;

process.stdout.write = function (d) {
    fs.appendFileSync('./foo', d);
    oldWrite.apply(this, arguments);
};

console.log('hello');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM