NodeJS:console.debug输出在哪里?

Pat*_*atS 9 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?')
Run Code Online (Sandbox Code Playgroud)

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

jos*_*736 10

从节点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 
Run Code Online (Sandbox Code Playgroud)

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

正如你所观察到的那样,调用这些方法并没有导致stdout出现任何问题.而是输出到任何附加的检查员.

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

请记住,默认情况下,检查器控制台会过滤掉对其的调用console.debug.您需要单击级别下拉列表并检查详细信息以查看console.debug输出.

或者,您可以:

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

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

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