Node.js console.log与console.info

时间:2014-08-27 16:48:32

标签: javascript node.js terminal console

使用console.log vs console.info有什么好处? 或者其他任何控制台命令?

console.info("info");
console.error("error");
console.warn("warn");

VS

console.log("log");

我认为它可能会改变输出的颜色或连接某种标签,但它们似乎都做同样的事情。根据这里的文档:

https://nodejs.org/api/console.html#console_console_info_data

它们似乎都与console.log

相同

10 个答案:

答案 0 :(得分:57)

根据您链接到的文档,console.errorconsole.warn输出到stderr。其他输出到stdout

如果您正在从node.js进行管道或重定向,则差异非常重要。

在浏览器和Node.js中都编写了很多JavaScript。让节点实现完整的控制台可以实现更好的代码交叉兼容性。

在大多数浏览器中,不仅可以使用不同的颜色登录,还可以过滤以查看特定的消息。

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");

答案 1 :(得分:45)

console.log()比console.info()

他们是同一件事,而这是唯一的优势

enter image description here

答案 2 :(得分:20)

根据docs,非常清楚。

  

console.info([data],[...])#   与console.log相同。

     

console.error([data],[...])#   与console.log相同,但打印到stderr。

     

console.warn([data],[...])#   与console.error相同。

这意味着没有任何好处或缺点。 info == logwarn == error。除非您要打印到stderr,否则info和/或log将有效。

答案 3 :(得分:14)

在视觉上,console.logconsole.infoconsole.warn以及console.error服务器端(终端)之间实际上没有差异。

但是,lightweight modules分别为console.infoconsole.warnconsole.error添加了蓝色,橙色和红色。这样,控制台API的行为就像客户端一样。

 npm i console-info console-warn console-error --save-dev;

enter image description here

答案 4 :(得分:11)

虽然console.log和console.info可能没有什么不同,但除了着色之外还有其他用途。例如,当使用像eslint这样的linter时,可以设置console.log来提供警告消息。假设您只想将console.log用于开发目的,并使用console.info获取最终用户可能需要的信息。通过linter,您现在可以直观地提醒您在开发期间帮助您的临时console.logs,但必须在提交/发布之前将其删除。

答案 5 :(得分:7)

除了接受的答案之外还有一个细节:在Chrome和FireFox中,console.info日志行的前缀是 i 图标,console.log行不是。 warnerror行分别以小三角形和 x 作为前缀。

答案 6 :(得分:2)

已经确定日志和信息基本上是同一件事,但是我不确定是否完全回答了这个问题:

使用console.log和console.info有什么好处?

除了已经提到的优点之外,还有一个好处是您可以将它们用于不同的目的。例如,您可以仅使用console.log进行快速调试并将内容吐出到控制台,而可以将console.info用作要在代码中输出到控制台的永久消息,例如有关当前应用程序状态的信息。然后,当您遇到在控制台中打印了随机对象的情况,并且意识到偶然在某个地方留下了一条日志语句时,可以对'console.log'进行全局搜索并删除每个实例并放心您没有删除要留在那里的任何重要内容。

答案 7 :(得分:0)

标准输入 可读的流,用于读取用户的输入。

标准输出 同步或异步可写流。

stderr 用于错误消息的阻塞同步可写流。

stdout或 non-blocking 函数是:console.log,console.info,util.puts,util.print和Stderr。

阻止功能是:console.warn,console.error,util.debug和process.stdin(获取用户输入的可读流)。

答案 8 :(得分:0)

不同的日志记录级别可让您管理控制台中的噪声级别:在Firefox(我现在使用78)和Chrome(84)devtools中,js控制台可让您选择您想看到什么输出的“调试级别”。 FF使您可以通过单击每个按钮的单个按钮(显示多少个)来切换console.error.warn.log.info.debug的可见性被“取消”(处于“关闭”状态)),而Chrome下拉菜单项旁边带有复选标记(.info.log由“信息”控制,.debug由“详细”控制”)。如果禁止输出,Chrome下拉标签(“所有级别”或您设置的任何内容)将变为红色。

答案 9 :(得分:0)

我已经看到console.log用于临时记录状态信息以进行调试。

console.info是更永久的事情-例如说正在运行的端口,以及在调试完成后不会切断的端口。

这使得清理代码提交变得容易。您甚至可以让自己的短子有一个规则来阻止console.log提交。