创建了一个访问和错误管道或可写流,以将console.log或console.error写入文件流。
var fs = require("fs");
var access = fs.createWriteStream('/node.access.log', { flags: 'a' });
var error = fs.createWriteStream('/node.error.log', { flags: 'a' });
process.stdout.pipe(access); // redirect stdout / stderr
process.stderr.pipe(error);
我的期望是,每当我执行console.log
或console.error
时,它将被写入文件输出流。
我遇到错误
Error: read ENOTCONN
at Socket._read (net.js:528:20)
at Socket.Readable.read (_stream_readable.js:457:10)
at resume_ (_stream_readable.js:936:12)
at processTicksAndRejections (internal/process/task_queues.js:84:9)
Emitted 'error' event at:
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at processTicksAndRejections (internal/process/task_queues.js:84:9) {
errno: 'ENOTCONN',
code: 'ENOTCONN',
syscall: 'read'
}
答案 0 :(得分:0)
这是因为process.stdout是可写流,而不是可读(或双工)流,因此无法绑定到其事件。
您可以使用双工流覆盖全局process.stdout(将原始流保留在另一个全局变量中之后,否则您将需要使用net写入文件描述符IO