我的node.js应用程序有很多控制台日志,这对我来说很重要(这是一个很大的应用程序,因此运行了很长时间,我需要知道事情仍在进行中),但最终却出现了数千行控制台日志。
是否可以通过某种方式console.update擦除/替换控制台行而不是创建新行?
我的node.js应用程序有很多控制台日志,这对我来说很重要(这是一个很大的应用程序,因此运行了很长时间,我需要知道事情仍在进行中),但最终却出现了数千行控制台日志。
是否可以通过某种方式console.update擦除/替换控制台行而不是创建新行?
Answers:
尝试在控制台上使用process.stdout方法:
process.stdout.write("Hello, World");
process.stdout.clearLine();
process.stdout.cursorTo(0);
process.stdout.write("\n"); // end the line
webstorm=true在webstorm节点配置中添加应用程序参数,并检查是否process.argv.find(x => x.startsWith('webstorm=true')使用此答案
if (process.stdout.clearLine) { process.stdout.clearLine() }?
node -e "for(let i=1;i<=1000;i++){process.stdout.write('Hello, World'); if(i<10)process.stdout.clearLine(); process.stdout.cursorTo(0);}"或node -e "for(let i=1;i<=1000;i++){process.stdout.clearLine(); process.stdout.cursorTo(0); process.stdout.write('hello, world')}"
按照@michelek的回答,您可以使用类似以下的功能:
function printProgress(progress){
process.stdout.clearLine();
process.stdout.cursorTo(0);
process.stdout.write(progress + '%');
}
process.stdout.clearLine()
当然,您可以使用我帮助创建的模块执行此操作:fknsrs / jetty
通过安装
npm install jetty
这是一个用法示例
// Yeah, Jetty!
var Jetty = require("jetty");
// Create a new Jetty object. This is a through stream with some additional
// methods on it. Additionally, connect it to process.stdout
var jetty = new Jetty(process.stdout);
// Clear the screen
jetty.clear();
// write something
jetty.text("hello world");
jetty.moveTo([0,0]);
jetty.text("hello panda");
单独使用码头并不是超级有用。当您在其上构建一些抽象以减少码头呼叫的详细程度时,它会更加有效。
写一个分行。
process.stdout.write("text");
process.stdout.write("more");
process.stdout.write("\n"); // end the line
如果输出量是真正的问题,那么您可能需要重新考虑日志记录。您可以使用允许选择运行时日志记录的日志系统,以将输出范围缩小到所需的范围。
// The sections we want to log and the minimum level
var LOG_LEVEL = 4;
var LOG_SECTIONS = ["section1","section2","section3"];
function logit(msg, section, level) {
if (LOG_SECTIONS.indexOf(section) > -1 && LOG_LEVEL >= level) {
console.log(section + ":" + msg);
}
}
logit("message 1", "section1", 4); // will log
logit("message 2", "section2", 4); // will log
logit("message 3", "section3", 2); // wont log, below log level
logit("message 4", "section4", 4); // wont log, not in a log section