Js console.log vs console.info

使用 console.logconsole.info的好处是什么? 或者其他控制台命令?

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

console.log("log");

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

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

他们似乎都做同样的 console.log

74713 次浏览

根据 医生的数据,很明显。

Info ([ data ] ,[ ... ]) # 和 Console 日志一样。

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

警告([ data ] ,[ ... ]) # 和控制台一样,错误。

这意味着没有好处也没有坏处。info = = logwarn = = error.除非你想打印到 stderrinfo和或 log将工作。

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

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

有很多 JavaScript 编写在浏览器和 Node.js中运行。让节点实现完整的控制台允许更大的代码交叉兼容性。

在大多数浏览器中,这些日志不仅使用不同的颜色,而且您还可以过滤以查看特定的消息。

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

console.log()console.info()

它们是一样的,这是唯一的优势。

enter image description here

除了公认的答案之外,还有一个细节: 在 Chrome 和 FireFox 中,console.info日志行前面有一个小小的 图标,而 console.log日志行没有。warnerror线分别以一个小三角形和 X作为前缀。

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

然而,还有 轻量级模块console.infoconsole.warnconsole.error分别添加了 蓝色,橙色和红色。因此,控制台 API 的行为类似于客户端。

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

enter image description here

虽然 console.logconsole.info可能看起来一样,只是颜色不同(在大多数浏览器中) ,但是您可以利用这些不同命名的函数。

例如,可以配置一个 linter (如 eslint) ,以便在使用 console.log时生成一条警告消息,但对于 console.info不生成警告。现在,您可以使用 console.log进行临时开发/调试日志记录,使用 console.info获取终端用户可能需要的信息。在提交代码或发布版本构建之前,行程警告将提醒甚至强制您删除临时 console.log调用。

Stdin 用于从用户读取输入的可读流。

Stdout 一个可写的流,可以是同步的也可以是异步的。

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

Stdout 或 无阻塞函数是: console.log、 console.info、 util.put、 util.print 和 Stderr。

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

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

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

一个好处,除了已经提到的,是你可以使用每个不同的目的。例如,您可能仅仅为了快速调试和向控制台输出信息而使用 console.log,而您可能为了在代码中输出到控制台的永久消息而使用 console.info,例如当前应用程序状态的信息。然后,当你遇到一个情况,一个随机的对象打印在你的控制台,你意识到你已经离开了一个日志语句在某个地方偶然,你可以做一个全局搜索“ console. log”和删除每个实例,并有信心,你没有删除任何重要的,你想留在那里。

不同的日志记录级别可以让你管理控制台中的噪声级别: 在 Firefox (我现在使用78)和 Chrome (84) devtools 中,js 控制台可以让你选择你想看到的输出的“调试级别”。FF 允许你通过单击每个按钮来切换 console.error.warn.log.info.debug消息的可见性(当“关闭”时,会显示有多少被抑制) ,而 Chrome 有一个下拉菜单,在项目旁边有一个复选标记(.info.log由“ Info”控制,.debug由“ Verbose”控制)。如果输出被抑制,Chrome 下拉标签(“所有级别”或任何你设置的)将变成红色。

我已经看到了 console.log用于临时记录用于调试的状态信息的位置。

console.info是一个更持久的东西-例如说什么端口的东西正在运行,以及什么东西你不会删除后,你完成调试。

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

对于反应开发者来说是有区别的。它来自于 response devtool 扩展中的一个问题,至少影响到 Create-React-App 用户,不确定是否都是 web pack。

这里提到的问题是: Response _ devtools _ backend. js: 4049

但问题是: Log 将始终将其源报告为

react_devtools_backend.js:4049

Info 将包含您正在记录的实际文件名和行号。