Node.js console.log 与 console.info

Posted

技术标签:

【中文标题】Node.js console.log 与 console.info【英文标题】:Node.js console.log vs console.info 【发布时间】:2014-10-21 08:52:56 【问题描述】:

使用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一样做

【问题讨论】:

可能重复:***.com/questions/14437428/… 一些提示:您可以使用颜色更好地查看:console.log('%c Sample Text', 'color:green;');或者使用以下命令在文本中添加一些 VAR:console.log(`Sample $variable`, 'color:green;'); 谢谢,我不知道它也适用于 node js 【参考方案1】:

React 开发人员有所不同。它来自 react devtool 扩展中的一个问题,至少会影响 Create-React-App 用户,不确定它是否都是 web pack。

这里提到了问题: react devtools console.log() from react_devtools_backend.js:4049

但要点是: console.log 将始终将其来源报告为

react_devtools_backend.js:4049 

其中的 console.info 将包含您正在登录的实际文件名和行号。

【讨论】:

有用,即使在 6 年后,知道这一点。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

console.log()console.info()

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

【讨论】:

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

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

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

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

【讨论】:

【参考方案6】:

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

【讨论】:

我不知道为什么我发现这个答案比其他所有答案都更合适,很好@Figidon。 我同意。与 eslint 一起用于开发和生产模式的绝佳解决方案。你不能通过console.log! (手杖和剑)【参考方案7】:

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

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

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

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

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

【讨论】:

【参考方案8】:

从视觉上看,console.logconsole.infoconsole.warnconsole.error服务器端(终端) 方面实际上没有区别。

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

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

【讨论】:

【参考方案9】:

根据docs 很清楚。

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

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

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

这意味着没有好处或坏处。 info == logwarn == error。除非您想打印到stderr,否则info 和/或log 都可以。

【讨论】:

【参考方案10】:

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

【讨论】:

正如在其他地方观察到的那样:Firefox 78:在 log.info 输出之前打印 ⓘ(圆圈中的 i)。 Chrome 84:没有【参考方案11】:

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

如果您是从node.js 进行管道或重定向,则区别很重要。

有很多 javascript 可以在浏览器和Node.js 中运行。让 node 实现完整的控制台可以提高代码的交叉兼容性。

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

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

【讨论】:

谢谢!这是它以不同方式显示的浏览器。我在终端中寻找颜色变化。 node (8.11.4) 和 Chrome 67 中,还有 console.debug(很可能还有早期版本)。 debug 排名低于 log

以上是关于Node.js console.log 与 console.info的主要内容,如果未能解决你的问题,请参考以下文章

node.js与浏览器的单线程

node.js 的 console.log 是异步的吗?

没有新行的node.js console.log [重复]

[Node.js] 關於 console.log 的格式化輸出

如何在heroku中显示node.js中的所有console.log?

Node.js中基础知识