Skip to content

Commit ff8af58

Browse files
mfdebianmarco-ippolito
authored andcommitted
doc: add esm examples to node:trace_events
PR-URL: #56514 Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 27b9cfd commit ff8af58

File tree

1 file changed

+102
-19
lines changed

1 file changed

+102
-19
lines changed

doc/api/tracing.md

Lines changed: 102 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,19 @@ node --trace-event-categories v8,node,node.async_hooks
6969

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

72-
```js
73-
const trace_events = require('node:trace_events');
74-
const tracing = trace_events.createTracing({ categories: ['node.perf'] });
72+
```mjs
73+
import { createTracing } from 'node:trace_events';
74+
const tracing = createTracing({ categories: ['node.perf'] });
75+
tracing.enable(); // Enable trace event capture for the 'node.perf' category
76+
77+
// do work
78+
79+
tracing.disable(); // Disable trace event capture for the 'node.perf' category
80+
```
81+
82+
```cjs
83+
const { createTracing } = require('node:trace_events');
84+
const tracing = createTracing({ categories: ['node.perf'] });
7585
tracing.enable(); // Enable trace event capture for the 'node.perf' category
7686

7787
// do work
@@ -153,20 +163,36 @@ Disables this `Tracing` object.
153163
Only trace event categories _not_ covered by other enabled `Tracing` objects
154164
and _not_ specified by the `--trace-event-categories` flag will be disabled.
155165

156-
```js
157-
const trace_events = require('node:trace_events');
158-
const t1 = trace_events.createTracing({ categories: ['node', 'v8'] });
159-
const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] });
166+
```mjs
167+
import { createTracing, getEnabledCategories } from 'node:trace_events';
168+
const t1 = createTracing({ categories: ['node', 'v8'] });
169+
const t2 = createTracing({ categories: ['node.perf', 'node'] });
170+
t1.enable();
171+
t2.enable();
172+
173+
// Prints 'node,node.perf,v8'
174+
console.log(getEnabledCategories());
175+
176+
t2.disable(); // Will only disable emission of the 'node.perf' category
177+
178+
// Prints 'node,v8'
179+
console.log(getEnabledCategories());
180+
```
181+
182+
```cjs
183+
const { createTracing, getEnabledCategories } = require('node:trace_events');
184+
const t1 = createTracing({ categories: ['node', 'v8'] });
185+
const t2 = createTracing({ categories: ['node.perf', 'node'] });
160186
t1.enable();
161187
t2.enable();
162188

163189
// Prints 'node,node.perf,v8'
164-
console.log(trace_events.getEnabledCategories());
190+
console.log(getEnabledCategories());
165191

166192
t2.disable(); // Will only disable emission of the 'node.perf' category
167193

168194
// Prints 'node,v8'
169-
console.log(trace_events.getEnabledCategories());
195+
console.log(getEnabledCategories());
170196
```
171197

172198
#### `tracing.enable()`
@@ -200,10 +226,19 @@ added: v10.0.0
200226

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

203-
```js
204-
const trace_events = require('node:trace_events');
229+
```mjs
230+
import { createTracing } from 'node:trace_events';
231+
const categories = ['node.perf', 'node.async_hooks'];
232+
const tracing = createTracing({ categories });
233+
tracing.enable();
234+
// do stuff
235+
tracing.disable();
236+
```
237+
238+
```cjs
239+
const { createTracing } = require('node:trace_events');
205240
const categories = ['node.perf', 'node.async_hooks'];
206-
const tracing = trace_events.createTracing({ categories });
241+
const tracing = createTracing({ categories });
207242
tracing.enable();
208243
// do stuff
209244
tracing.disable();
@@ -226,23 +261,71 @@ Given the file `test.js` below, the command
226261
`node --trace-event-categories node.perf test.js` will print
227262
`'node.async_hooks,node.perf'` to the console.
228263

229-
```js
230-
const trace_events = require('node:trace_events');
231-
const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] });
232-
const t2 = trace_events.createTracing({ categories: ['node.perf'] });
233-
const t3 = trace_events.createTracing({ categories: ['v8'] });
264+
```mjs
265+
import { createTracing, getEnabledCategories } from 'node:trace_events';
266+
const t1 = createTracing({ categories: ['node.async_hooks'] });
267+
const t2 = createTracing({ categories: ['node.perf'] });
268+
const t3 = createTracing({ categories: ['v8'] });
269+
270+
t1.enable();
271+
t2.enable();
272+
273+
console.log(getEnabledCategories());
274+
```
275+
276+
```cjs
277+
const { createTracing, getEnabledCategories } = require('node:trace_events');
278+
const t1 = createTracing({ categories: ['node.async_hooks'] });
279+
const t2 = createTracing({ categories: ['node.perf'] });
280+
const t3 = createTracing({ categories: ['v8'] });
234281

235282
t1.enable();
236283
t2.enable();
237284

238-
console.log(trace_events.getEnabledCategories());
285+
console.log(getEnabledCategories());
239286
```
240287

241288
## Examples
242289

243290
### Collect trace events data by inspector
244291

245-
```js
292+
```mjs
293+
import { Session } from 'node:inspector';
294+
const session = new Session();
295+
session.connect();
296+
297+
function post(message, data) {
298+
return new Promise((resolve, reject) => {
299+
session.post(message, data, (err, result) => {
300+
if (err)
301+
reject(new Error(JSON.stringify(err)));
302+
else
303+
resolve(result);
304+
});
305+
});
306+
}
307+
308+
async function collect() {
309+
const data = [];
310+
session.on('NodeTracing.dataCollected', (chunk) => data.push(chunk));
311+
session.on('NodeTracing.tracingComplete', () => {
312+
// done
313+
});
314+
const traceConfig = { includedCategories: ['v8'] };
315+
await post('NodeTracing.start', { traceConfig });
316+
// do something
317+
setTimeout(() => {
318+
post('NodeTracing.stop').then(() => {
319+
session.disconnect();
320+
console.log(data);
321+
});
322+
}, 1000);
323+
}
324+
325+
collect();
326+
```
327+
328+
```cjs
246329
'use strict';
247330

248331
const { Session } = require('inspector');

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy