Node.js console.log与console.info

sea*_*rke 71 javascript terminal console node.js

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

console.info("info");
console.error("error");
console.warn("warn");
Run Code Online (Sandbox Code Playgroud)

VS

console.log("log");
Run Code Online (Sandbox Code Playgroud)

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

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

他们似乎都是这样做的 console.log

Jer*_*her 62

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

如果你正在做管道或重定向node.js差异很重要.

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

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

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Run Code Online (Sandbox Code Playgroud)

  • 在`node`(`8.11.4`)和Chrome 67 中,还有`console.debug`(很可能还有更早的版本)。`debug` 排名低于 `log`。 (2认同)

Max*_*Max 46

console.log()比console.info()短

它们是同一个东西,这是唯一的优势

在此输入图像描述

  • 我投票是因为"这是唯一的优势"根本不是真实而且非常短视.这些方法可能具有完全相同的实现,但它们具有不同的**含义**.例如,console允许您轻松实现日志级别过滤. (41认同)
  • console.log =标准输出,而console.error = stderr (4认同)
  • https://developer.mozilla.org/en-US/docs/Web/API/Console/info - "在Firefox和Chrome中,Web控制台日志中这些项目旁边会显示一个小的"i"图标" - - https://image.ibb.co/gYrZHe/infolog.png (4认同)
  • @EdwardSammutAlessi我使用的是Chrome,无法重新创建并显示i图标 (2认同)
  • 另一个优点:我几乎总是使用 console.log 进行调试。虽然有时我实际上想记录一些东西(例如在节点 CLI 应用程序中)。在提交代码之前,我经常会执行“ack console.log”来查看代码中是否留下了任何 console.logs。但这也会捕获我的实际日志。所以我使用 console.info 来表示“我希望它留在这里,它不是为了调试”。 (2认同)

Ste*_*her 21

根据文档,它很清楚.

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

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

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

这意味着没有任何好处或缺点.info== log,warn== error.除非您想要打印stderr,infolog将要工作.


Abd*_*UMI 18

在视觉上,没有区别其实当中console.log,console.info,console.warn,以及console.error关于服务器端(终端).

不过,也有轻便的模块即添加蓝色,橙色和红色console.info,console.warn,还有console.error分别.这样,控制台API的行为就像客户端一样.

 npm i console-info console-warn console-error --save-dev;
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 16

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

  • 我不知道为什么我发现这个答案比所有其他答案都更合适,不错的 @Figidon 。 (3认同)

Bil*_*oag 9

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


小智 9

stdin 用于读取用户输入的可读流。

stdout 同步或异步可写流。

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

stdout 或非阻塞函数有:console.log、console.info、util.puts、util.print 和 Stderr。

阻塞函数有:console.warn、console.error、util.debug 和 process.stdin(用于获取用户输入的可读流)。


Rob*_*ohr 6

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

console.info是一个更永久的事情 - 例如说某些东西正在哪个端口上运行,以及完成调试后你不会删除的东西。

这使得清理代码以供提交变得容易。您甚至可以让 linter 有一条规则来阻止 console.log 被提交。


dal*_*lin 5

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

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

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