Trace events
目录
自 v7.7.0 版本开始新增
源代码: lib/trace_events.js
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 detailedasync_hooks
trace data. Theasync_hooks
events have a uniqueasyncId
and a specialtriggerId
triggerAsyncId
property.node.bootstrap
: Enables capture of Node.js bootstrap milestones.node.console
: Enables capture ofconsole.time()
andconsole.count()
output.node.threadpoolwork.sync
: Enables capture of trace data for threadpool synchronous operations, such asblob
,zlib
,crypto
andnode_api
.node.threadpoolwork.async
: Enables capture of trace data for threadpool asynchronous operations, such asblob
,zlib
,crypto
andnode_api
.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 thenode:vm
module'srunInNewContext()
,runInContext()
, andrunInThisContext()
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 theTracing
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:
string
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