我正在运行节点v8.5,我正在尝试使用实验性跟踪功能。
启动我的应用程序node --trace-events-enabled app.js
我希望看到根据此处https://nodejs.org/api/tracing.html的节点文档生成跟踪日志文件,我可以通过访问chrome://tracing
并加载生成的跟踪日志来查看文件。
但是,似乎节点根本不生成该日志文件。是否缺少设置,或者日志文件是否保存在项目目录之外?
答案 0 :(得分:1)
我最近尝试使用节点v8.9.1,并且正确创建日志取决于您关闭app.js的方式。
此示例的应用程序正常运行:它在您启动节点的目录中创建名为node_trace.1.log
的文件(node --trace-events-enabled ./bin/trace-me.js
将在./
中创建文件) :
console.log("Trace me");
const interv = setInterval(()=>console.log("Runnning"), 1000);
// quit on ctrl-c when running docker in terminal
process.on('SIGINT', function onSigint() {
console.info('Got SIGINT (aka ctrl-c). Graceful shutdown ', new Date().toISOString());
clearInterval(interv);
});
process.on('beforeExit', function (exitCode) {
console.log("Before exit: "+ exitCode);
});
例如,如果您使用ctrl-c
终止流程而不管理它,则不会调用beforeExit
事件,也不会创建跟踪日志。
如果您致电process.exit()
:
即使还有,它也会尽快终止 尚未完全完成的异步操作挂起, 包括对process.stdout和process.stderr的I / O操作。 为described on docs。
因此,解决方案正确管理SIGINT
和SIGTERM
事件,并检查是否调用了beforeExit
,因为只有在Node.js清空其事件循环并且未被杀死时才会发出它