是否有Node.js console.log长度限制?

时间:2014-11-19 20:24:45

标签: node.js console.log

Node.js中console.log输出的长度是否有限制?以下打印数字最多为56462,然后停止。这是因为我们从MySQL返回数据集,输出只会在327k字符后退出。

var out = ""; 
for (i = 0; i < 100000; i++) {
    out += " " + i; 
}

console.log(out); 

字符串本身似乎没问题,因为这会返回最后几个数字,直到99999:

console.log(out.substring(out.length - 23)); 

返回:

99996 99997 99998 99999

这是使用Node v0.6.14。

2 个答案:

答案 0 :(得分:4)

你是否曾尝试在具有更多内存的机器上写这么多? 根据Node源代码控制台写入一个流:https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/console.js#L55
流可以将数据缓冲到内存中:http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback

因此,如果您将大量数据放入流中,则可能会达到内存上限。 我建议您拆分数据并将其反馈到process.stdout.write方法,例如:http://nodejs.org/api/stream.html#stream_event_drain

答案 1 :(得分:0)

我建议在使用节点&gt;时使用输出文件。 6.0

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// custom simple logger
const logger = new Console(output, errorOutput);
// use it like console
var count = 5;
logger.log('count: %d', count);
// in stdout.log: count 5