Open In App

Node.js Tracing Objects

Improve
Improve
Like Article
Like
Save
Share
Report

The Tracing Objects (Added in v10.0.0) are used for a set of categories to enable and disable the tracing. When tracing events are created then tracing objects is disabled by calling tracing.enable() method and then categories are added to set of enabled trace and can be accessed by calling tracing.categories.

Some of the Tracing objects are mentioned below:

tracing.categories (Added in v10.0.0): object is an inbuilt application programming interface of the ‘trace_events’ module which returns trace event categories which is a comma-separated list that is covered by this Tracing object.  

Syntax:

tracing.categories

Parameters: This object does not accept any parameters as mentioned above.

Return Value <string>: It returns the trace event categories list separated by a comma.

tracing.disable() (Added in v10.0.0): object is an inbuilt application programming interface of the ‘trace_events’ module which disables the Tracing object which was enabled before by tracing.enable() method.

Syntax:

tracing.disable()

Parameters: This object does not accept any parameters.

Return Value: It does not return any value instead disables the trace events.

tracing.enable() (Added in v10.0.0): object is an inbuilt application programming interface of the ‘trace_events’ module which enables the Tracing object for the set of categories which was enabled before by tracing.enable() method.

Syntax:

tracing.enable()

Parameters: This object does not accept any parameters.

Return Value: It does not return any value instead enables trace events.

tracing.enabled (Added in v10.0.0): This object traces whether trace events are enabled or disabled and returns back the boolean value accordingly. 

Syntax:

tracing.enabled

Parameters: This object does not accept any parameters.

Return Value <boolean>: It returns true only if the Tracing object has been enabled.

Below programs illustrate the Tracing Objects in Node.js:

Install trace_events module:

npm install trace_events

Example 1: Filename: index.js

javascript




// 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();


Run index.js file using the following command:

node index.js

Output:

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

Example 2: Filename: index.js

javascript




// 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 whether trace is enabled or not
console.log(newTracing.enabled);
 
// Enabling newTracing
newTracing.enable();
 
// Printing tracing categories
console.log(newTracing.categories);
 
// Checking whether 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();


Run index.js file using the following command:

node index.js
For custom tracing
node --trace-event-categories v8, node, node.async_hooks index.js

Output:

>>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}

Tracing in Browser: In Google Chrome enter URL chrome://tracing. Now, Click the Load button, and load the file for tracing.

Reference: https://nodejs.org/api/tracing.html#tracing_tracing_object



Last Updated : 01 Dec, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads