NodeJS:console.debug输出在哪里?

时间:2017-11-06 21:46:14

标签: node.js

console.debug输出在哪里?如何启用它才能出现在stdout上,比如console.log?

我在https://nodejs.org/api/console.html查找了它,但它没有出现。 但是,如果我从命令行运行节点,则会定义它。

node
console.debug
[Function: debug]
console.debug('but where does this go?')

因此定义了函数,但(默认情况下)不输出到stdout或stderr。我猜测有一个标志可以打开它。

1 个答案:

答案 0 :(得分:9)

从节点v8.0.0开始,在v8.10和v10.x之前(取决于具体方法),全局console暴露了许多在浏览器中公开的相同方法,但没有记录他们的存在或行为。这些方法包括:

console.debug                 console.dirxml                console.markTimeline
console.profile               console.profileEnd            console.table
console.timeStamp             console.timeline              console.timelineEnd 

这些方法的实现不在节点中(它们没有出现在lib/console.js中);它们是由V8本身添加的,并且是copied到节点的全局console对象上。

正如您所观察到的那样,调用这些方法并不会导致出现任何问题。相反,输出到任何附加的检查员

这意味着您必须使用--inspect标记运行节点,打开Chrome并转到chrome://inspect,然后将检查器附加到您的流程。您将在检查器的控制台中看到扩展控制台方法的输出。

请注意,默认情况下,检查员控制台会过滤掉对console.debug的调用。您需要点击级别下拉列表并选中详细才能看到console.debug输出。

或者,您可以:

  • 在节点v8.0-8.9中,如果您只想查看stdout上的输出,请执行console.debug = console.log之类的操作
  • 更新到节点v8.10

v8.10.0开始,console.debug方法由节点实现,其输出显示在stdout上。 GUI检查器保留其行为(除非您更改日志记录级别,否则消息将被隐藏)。

node v10.x实现了上面列出的许多其他方法,这意味着这些方法现在按预期工作(即显示在stdout上)并且是documented