home / documentation / v18 / tracing

Trace events

目录

自 v7.7.0 版本开始新增

稳定级别:1 - Experimental

The node:trace_events module provides a mechanism to centralize tracing information generated by V8, Node.js core, and userspace code.

Tracing can be enabled with the --trace-event-categories command-line flag or by using the node:trace_events module. The --trace-event-categories flag accepts a list of comma-separated category names.

The available categories are:

  • node: An empty placeholder.
  • node.async_hooks: Enables capture of detailed async_hooks trace data. The async_hooks events have a unique asyncId and a special triggerIdtriggerAsyncId property.
  • node.bootstrap: Enables capture of Node.js bootstrap milestones.
  • node.console: Enables capture of console.time() and console.count() output.
  • node.dns.native: Enables capture of trace data for DNS queries.
  • node.net.native: Enables capture of trace data for network.
  • node.environment: Enables capture of Node.js Environment milestones.
  • node.fs.sync: Enables capture of trace data for file system sync methods.
  • node.fs_dir.sync: Enables capture of trace data for file system sync directory methods.
  • node.fs.async: Enables capture of trace data for file system async methods.
  • node.fs_dir.async: Enables capture of trace data for file system async directory methods.
  • node.perf: Enables capture of Performance API measurements.
    • node.perf.usertiming: Enables capture of only Performance API User Timing measures and marks.
    • node.perf.timerify: Enables capture of only Performance API timerify measurements.
  • node.promises.rejections: Enables capture of trace data tracking the number of unhandled Promise rejections and handled-after-rejections.
  • node.vm.script: Enables capture of trace data for the node:vm module's runInNewContext(), runInContext(), and runInThisContext() methods.
  • v8: The V8 events are GC, compiling, and execution related.
  • node.http: Enables capture of trace data for http request / response.

By default the node, node.async_hooks, and v8 categories are enabled.

BASH

Prior versions of Node.js required the use of the --trace-events-enabled flag to enable trace events. This requirement has been removed. However, the --trace-events-enabled flag may still be used and will enable the node, node.async_hooks, and v8 trace event categories by default.

BASH

Alternatively, trace events may be enabled using the node:trace_events module:

JS

Running Node.js with tracing enabled will produce log files that can be opened in the chrome://tracing tab of Chrome.

The logging file is by default called node_trace.$rotation.log, where $rotation is an incrementing log-rotation id. The filepath pattern can be specified with --trace-event-file-pattern that accepts a template string that supports $rotation and $pid:

BASH

To guarantee that the log file is properly generated after signal events like SIGINT, SIGTERM, or SIGBREAK, make sure to have the appropriate handlers in your code, such as:

JS

The tracing system uses the same time source as the one used by process.hrtime(). However the trace-event timestamps are expressed in microseconds, unlike process.hrtime() which returns nanoseconds.

The features from this module are not available in Worker threads.

The node:trace_events module

自 v10.0.0 版本开始新增

M Tracing object

自 v10.0.0 版本开始新增

The Tracing object is used to enable or disable tracing for sets of categories. Instances are created using the trace_events.createTracing() method.

When created, the Tracing object is disabled. Calling the tracing.enable() method adds the categories to the set of enabled trace event categories. Calling tracing.disable() will remove the categories from the set of enabled trace event categories.

M tracing.categories

自 v10.0.0 版本开始新增

A comma-separated list of the trace event categories covered by this Tracing object.

M tracing.disable()

自 v10.0.0 版本开始新增

Disables this Tracing object.

Only trace event categories not covered by other enabled Tracing objects and not specified by the --trace-event-categories flag will be disabled.

JS
M tracing.enable()

自 v10.0.0 版本开始新增

Enables this Tracing object for the set of categories covered by the Tracing object.

M tracing.enabled

自 v10.0.0 版本开始新增

  • boolean true only if the Tracing object has been enabled.

M trace_events.createTracing(options)

自 v10.0.0 版本开始新增

  • options Object
    • categories string[] An array of trace category names. Values included in the array are coerced to a string when possible. An error will be thrown if the value cannot be coerced.
  • Returns: Tracing.

Creates and returns a Tracing object for the given set of categories.

JS

M trace_events.getEnabledCategories()

自 v10.0.0 版本开始新增

Returns a comma-separated list of all currently-enabled trace event categories. The current set of enabled trace event categories is determined by the union of all currently-enabled Tracing objects and any categories enabled using the --trace-event-categories flag.

Given the file test.js below, the command node --trace-event-categories node.perf test.js will print 'node.async_hooks,node.perf' to the console.

JS

Examples

Collect trace events data by inspector

JS