Spec-Zone.ru › Deno 2

trace_events

Совместимость с Deno

Все экспортируемые элементы являются неработающими заглушками.

Модуль node:trace_events предоставляет механизм централизованного сбора данных трассировки, генерируемых V8, ядром Node.js и пользовательским кодом.

Трассировку можно включить с помощью флага командной строки --trace-event-categories или модуля trace_events. Флаг --trace-event-categories принимает список имен категорий, разделенных запятыми.

Доступны следующие категории:

  • node: пустой заполнитель.
  • node.async_hooks: включает сбор подробных данных трассировки async_hooks. События async_hooks имеют уникальный asyncId и специальное свойство triggerId triggerAsyncId.
  • node.bootstrap: включает сбор данных об этапах загрузки Node.js.
  • node.console: включает сбор вывода console.time() и console.count().
  • node.threadpoolwork.sync: включает сбор данных трассировки синхронных операций пула потоков, таких как blob, zlib, crypto и node_api.
  • node.threadpoolwork.async: включает сбор данных трассировки асинхронных операций пула потоков, таких как blob, zlib, crypto и node_api.
  • node.dns.native: включает сбор данных трассировки DNS-запросов.
  • node.net.native: включает сбор данных трассировки для сети.
  • node.environment: включает сбор данных об этапах среды Node.js.
  • node.fs.sync: включает сбор данных трассировки синхронных методов файловой системы.
  • node.fs_dir.sync: включает сбор данных трассировки синхронных методов каталогов файловой системы.
  • node.fs.async: включает сбор данных трассировки асинхронных методов файловой системы.
  • node.fs_dir.async: включает сбор данных трассировки асинхронных методов каталогов файловой системы.
  • node.perf: включает сбор измерений API производительности.
    • node.perf.usertiming: включает сбор только пользовательских измерений и меток времени API производительности.
    • node.perf.timerify: включает сбор только измерений timerify API производительности.
  • node.promises.rejections: включает сбор данных трассировки, отслеживающих количество необработанных отклонений Promise и отклонений, обработанных после возникновения.
  • node.vm.script: включает сбор данных трассировки для методов runInNewContext(), runInContext() и runInThisContext() модуля node:vm.
  • v8: события V8 связаны со сборкой мусора, компиляцией и выполнением.
  • node.http: включает сбор данных трассировки HTTP-запросов и ответов.

По умолчанию включены категории node, node.async_hooks и v8.

node --trace-event-categories v8,node,node.async_hooks server.js

В предыдущих версиях Node.js для включения событий трассировки требовалось использовать флаг --trace-events-enabled. Это требование было отменено. Однако флаг --trace-events-enabled можно использовать; по умолчанию он включает категории событий трассировки node, node.async_hooks и v8.

node --trace-events-enabled


node --trace-event-categories v8,node,node.async_hooks

Кроме того, события трассировки можно включить с помощью модуля node:trace_events:

import trace_events from 'node:trace_events';
const tracing = trace_events.createTracing({ categories: ['node.perf'] });
tracing.enable();  // Enable trace event capture for the 'node.perf' category

// do work

tracing.disable();  // Disable trace event capture for the 'node.perf' category

При запуске Node.js с включенной трассировкой создаются файлы журнала, которые можно открыть на вкладке chrome://tracing в Chrome.

По умолчанию файл журнала называется node_trace.${rotation}.log, где ${rotation} — идентификатор ротации журнала, который увеличивается при каждой ротации. Шаблон пути к файлу можно задать с помощью --trace-event-file-pattern, принимающего строку шаблона с поддержкой ${rotation} и ${pid}:

node --trace-event-categories v8 --trace-event-file-pattern '${pid}-${rotation}.log' server.js

Чтобы гарантировать правильное создание файла журнала после таких сигнальных событий, как SIGINT, SIGTERM или SIGBREAK, предусмотрите в коде соответствующие обработчики, например:

process.on('SIGINT', function onSigint() {
  console.info('Received SIGINT.');
  process.exit(130);  // Or applicable exit code depending on OS and signal
});

Система трассировки использует тот же источник времени, что и process.hrtime(). Однако временные метки событий трассировки выражаются в микросекундах, в отличие от process.hrtime(), возвращающего наносекунды.

Функции этого модуля недоступны в потоках Worker.

Использование в Deno

import * as mod from "node:trace_events";

function createTracing

Использование в Deno

import { createTracing } from "node:trace_events";
createTracing(options: CreateTracingOptions): Tracing
Совместимость с Deno

Этот символ является неработающей заглушкой.

Создает и возвращает объект Tracing для заданного набора categories.

import trace_events from 'node:trace_events';
const categories = ['node.perf', 'node.async_hooks'];
const tracing = trace_events.createTracing({ categories });
tracing.enable();
// do stuff
tracing.disable();

Параметры

options: CreateTracingOptions

Возвращаемый тип

Tracing

function getEnabledCategories

Использование в Deno

import { getEnabledCategories } from "node:trace_events";
getEnabledCategories(): string | undefined
Совместимость с Deno

Этот символ является неработающей заглушкой.

Возвращает список всех включенных в данный момент категорий событий трассировки, разделенных запятыми. Текущий набор включенных категорий событий трассировки определяется объединением всех включенных в данный момент объектов Tracing и любых категорий, включенных с помощью флага --trace-event-categories.

Для приведенного ниже файла test.js команда node --trace-event-categories node.perf test.js выведет в консоль 'node.async_hooks,node.perf'.

import trace_events from 'node:trace_events';
const t1 = trace_events.createTracing({ categories: ['node.async_hooks'] });
const t2 = trace_events.createTracing({ categories: ['node.perf'] });
const t3 = trace_events.createTracing({ categories: ['v8'] });

t1.enable();
t2.enable();

console.log(trace_events.getEnabledCategories());

Возвращаемый тип

string | undefined

interface CreateTracingOptions

Использование в Deno

import { type CreateTracingOptions } from "node:trace_events";
Совместимость с Deno

Этот символ является неработающей заглушкой.

Свойства

categories: string[]

Массив имен категорий трассировки. При возможности значения в массиве преобразуются в строки. Если преобразовать значение не удастся, будет выброшена ошибка.


interface Tracing

Использование в Deno

import { type Tracing } from "node:trace_events";
Совместимость с Deno

Этот символ является неработающей заглушкой.

Объект Tracing используется для включения и отключения трассировки наборов категорий. Экземпляры создаются с помощью метода trace_events.createTracing().

При создании объект Tracing отключен. Вызов метода tracing.enable() добавляет категории в набор включенных категорий событий трассировки. Вызов tracing.disable() удаляет категории из набора включенных категорий событий трассировки.

Свойства

categories: string
только для чтения

Список категорий событий трассировки, охватываемых этим объектом Tracing и разделенных запятыми.

enabled: boolean
только для чтения

true только в том случае, если объект Tracing был включен.

Методы

disable(): void

Отключает этот объект Tracing.

Будут отключены только те категории событий трассировки, которые не охватываются другими включенными объектами Tracing и не указаны флагом --trace-event-categories.

import trace_events from 'node:trace_events';
const t1 = trace_events.createTracing({ categories: ['node', 'v8'] });
const t2 = trace_events.createTracing({ categories: ['node.perf', 'node'] });
t1.enable();
t2.enable();

// Prints 'node,node.perf,v8'
console.log(trace_events.getEnabledCategories());

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

// Prints 'node,v8'
console.log(trace_events.getEnabledCategories());
enable(): void

Включает этот объект Tracing для набора категорий, охватываемых объектом Tracing.


© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/api/node/trace_events

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API