Node.js 跟踪对象
跟踪对象(在 v10.0.0中添加)用于一组类别以启用和禁用跟踪。创建跟踪事件时,通过调用 tracking.enable() 方法禁用跟踪对象,然后将类别添加到启用的跟踪集中,并且可以通过调用tracking.categories访问。
下面提到了一些跟踪对象:
追踪.categories (在 v10.0.0 中添加) :对象是“trace_events”模块的内置应用程序编程接口,它返回跟踪事件类别,这是一个由该跟踪对象覆盖的逗号分隔列表。
句法:
tracing.categories
参数:此对象不接受上述任何参数。
返回值< 字符串 > :返回以逗号分隔的跟踪事件类别列表。
跟踪.禁用() (在 v10.0.0 中添加) :对象是 'trace_events' 模块的内置应用程序编程接口,它禁用之前通过tracking.enable()方法启用的跟踪对象。
句法:
tracing.disable()
参数:此对象不接受任何参数。
返回值:它不返回任何值,而是禁用跟踪事件。
tracking.enable() (在 v10.0.0 中添加) :对象是“trace_events”模块的内置应用程序编程接口,它为之前通过 tracking.enable() 方法启用的类别集启用跟踪对象。
句法:
tracing.enable()
参数:此对象不接受任何参数。
返回值:它不返回任何值,而是启用跟踪事件。
启用跟踪 (在 v10.0.0 中添加) :此对象跟踪跟踪事件是启用还是禁用,并相应地返回布尔值。
句法:
tracing.enabled
参数:此对象不接受任何参数。
返回值< boolean > :仅当 Tracing 对象已启用时才返回 true。
下面的程序说明了 Node.js 中的跟踪对象:
安装 trace_events 模块:
npm install trace_events
示例 1:文件名:index.js
// Node.js program to demonstrate the
// Tracing methods
// Using require to access trace_events module
const trace_events = require('trace_events');
const newTraceEvent1 = trace_events.createTracing({
categories: ['node.perf.usertiming', 'v8'] });
const { createTracing } = require('trace_events');
const newTraceEvent2 = createTracing({
categories: ['node', 'node.promises.rejections'] });
newTraceEvent1.enable();
newTraceEvent2.enable();
// Prints newTraceEvent1 trace event
console.log(newTraceEvent1);
// Prints newTraceEvent2 trace event
console.log(newTraceEvent2);
// Prints all enabled categories
console.log(trace_events.getEnabledCategories());
// Disable 'node, node.promises.rejections' category
newTraceEvent2.disable();
// Prints 'node.perf.usertiming, v8'
console.log(trace_events.getEnabledCategories());
// Disable 'node.perf.usertiming' category
newTraceEvent1.disable();
使用以下命令运行index.js文件:
node index.js
输出:
Tracing { enabled: true, categories: ‘node.perf.usertiming, v8’ }
Tracing { enabled: true, categories: ‘node, node.promises.rejections’ }
node, node.perf.usertiming, node.promises.rejections, v8
node.perf.usertiming, v8
示例 2:文件名:index.js
// Node.js program to demonstrate the
// Trace methods
// Using require to access trace_events module
const trace_events = require("trace_events");
// Tracing categories
const categories = [ 'myapp.category', 'v8', 'node',
'node.async_hooks', 'node.promises.rejections', 'node.vm.script',
'node.perf.usertiming', 'node.perf.timerify'];
// Now create tracing for custom trace category.
const newTracing = trace_events.createTracing({ categories });
// Printing tracing event
console.log(newTracing);
// Printing tracing categories
console.log(newTracing.categories);
// Checking wheather trace is enabled or not
console.log(newTracing.enabled);
// Enabling newTracing
newTracing.enable();
// Printing tracing categories
console.log(newTracing.categories);
// Checking wheather trace is enabled or not
console.log(newTracing.enabled);
// Do some stuff
const perf_hooks = require("perf_hooks");
perf_hooks.performance.mark("Alfa");
() => {
perf_hooks.performance.mark("Beta");
perf_hooks.performance.measure(
"Alfa to Beta", "Alfa", "Beta");
};
// Prints performance stuff
console.log(perf_hooks.performance);
// Disables newTracing
newTracing.disable();
使用以下命令运行index.js文件:
node index.js
For custom tracing
node --trace-event-categories v8, node, node.async_hooks index.js
输出:
>>Tracing { enabled: false, categories: ‘myapp.category, ………., node.perf.timerify’}
>>myapp.category, v8, ……….., node.perf.timerify
>>false
>>myapp.category, v8, ………, node.perf.timerify
>>true
>>{ nodeTiming: { name: ‘node’, …loopExit: -1 },
timeOrigin: 1596967720328.603}
在浏览器中跟踪:在 Google Chrome 中输入 URL chrome://tracing 。现在,单击“加载”按钮,并加载文件以进行跟踪。
参考: https://nodejs.org/api/tracing.html#tracing_tracing_object