Is there a Node.js console.log length limit?

心已入冬 提交于 2020-01-01 04:54:14

问题


Is there a limit the length of console.log output in Node.js? The following prints numbers up to 56462, then stops. This came up because we were returning datasets from MySQL and the output would just quit after 327k characters.

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

console.log(out); 

The string itself seems fine, as this returns the last few numbers up to 99999:

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

Returns:

99996 99997 99998 99999

This is using Node v0.6.14.


回答1:


Have you tried writing that much on a machine with more memory?
According to Node source code console is writing into a stream: https://github.com/joyent/node/blob/cfcb1de130867197cbc9c6012b7e84e08e53d032/lib/console.js#L55
And streams may buffer the data into memory: http://nodejs.org/api/stream.html#stream_writable_write_chunk_encoding_callback

So if you put reeeaally a lot of data into a stream, you may hit the memory ceiling. I'd recommend you split up your data and feed it into process.stdout.write method, here's an example: http://nodejs.org/api/stream.html#stream_event_drain




回答2:


I would recommend using output to file when using node > 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


来源:https://stackoverflow.com/questions/27026301/is-there-a-node-js-console-log-length-limit

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!