Spec-Zone.ru › Node.js

Консоль

Исходный код: lib/console.js

Стабильность: 2 — Стабильный

Модуль node:console предоставляет простую консоль для отладки, похожую на механизм консоли JavaScript, доступный в веб-браузерах.

Модуль экспортирует два отдельных компонента:

  • Класс Console с такими методами, как console.log(), console.error() и console.warn(), которые можно использовать для записи в любой поток Node.js.
  • Глобальный экземпляр console, настроенный для записи в process.stdout и process.stderr. Глобальный объект console можно использовать без вызова require('node:console').

Предупреждение: методы глобального объекта console не являются последовательно синхронными, как похожие на них API браузера, и не являются последовательно асинхронными, как все остальные потоки Node.js. Программам, которым важно полагаться на синхронное или асинхронное поведение функций console, сначала следует выяснить, каков базовый поток консоли. Это связано с тем, что поток зависит от используемой платформы и конфигурации стандартных потоков текущего процесса. Дополнительные сведения см. в примечании о вводе-выводе процесса.

Пример использования глобального объекта console:

console.log('hello world');
// Prints: hello world, to stdout
console.log('hello %s', 'world');
// Prints: hello world, to stdout
console.error(new Error('Whoops, something bad happened'));
// Prints error message and stack trace to stderr:
//   Error: Whoops, something bad happened
//     at [eval]:5:15
//     at Script.runInThisContext (node:vm:132:18)
//     at Object.runInThisContext (node:vm:309:38)
//     at node:internal/process/execution:77:19
//     at [eval]-wrapper:6:22
//     at evalScript (node:internal/process/execution:76:60)
//     at node:internal/main/eval_string:23:3

const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr
jscopy

Пример использования класса Console:

const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);

myConsole.log('hello world');
// Prints: hello world, to out
myConsole.log('hello %s', 'world');
// Prints: hello world, to out
myConsole.error(new Error('Whoops, something bad happened'));
// Prints: [Error: Whoops, something bad happened], to err

const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to err
jscopy

Класс: Console

История
Версия Изменения
v8.0.0

Ошибки, возникающие при записи в базовые потоки, теперь по умолчанию игнорируются.

Класс Console можно использовать для создания простого регистратора с настраиваемыми выходными потоками. Доступ к нему можно получить через require('node:console').Console или console.Console (либо через соответствующие деструктурированные переменные):

Модули JavaScript
import { Console } from 'node:console';
CommonJS
const { Console } = require('node:console');
const { Console } = console;
jscopy

new Console(stdout[, stderr][, ignoreErrors])

new Console(options)

История
Версия Изменения
v24.10.0

Параметр inspectOptions может быть Map из потока в параметры.

v14.2.0, v12.17.0

Добавлен параметр groupIndentation.

v11.7.0

Добавлен параметр inspectOptions.

v10.0.0

Конструктор Console теперь поддерживает аргумент options, также добавлен параметр colorMode.

v8.0.0

Добавлен параметр ignoreErrors.

  • options <Object>
    • stdout <stream.Writable>
    • stderr <stream.Writable>
    • ignoreErrors <boolean> Игнорировать ошибки при записи в базовые потоки. По умолчанию: true.
    • colorMode <boolean> | <string> Задаёт поддержку цветов для этого экземпляра Console. Значение true включает раскрашивание при просмотре значений. Значение false отключает раскрашивание при просмотре значений. Значение 'auto' определяет поддержку цветов в зависимости от значения свойства isTTY и значения, возвращаемого getColorDepth() для соответствующего потока. Этот параметр нельзя использовать, если также задан inspectOptions.colors. По умолчанию: 'auto'.
    • inspectOptions <Object> | <Map> Задаёт параметры, передаваемые в util.inspect(). Это может быть объект параметров или, если для stdout и stderr нужны разные параметры, Map, сопоставляющий объекты потоков с параметрами.
    • groupIndentation <number> Задаёт отступ для групп. По умолчанию: 2.

Создаёт новый объект Console с одним или двумя экземплярами доступных для записи потоков. stdout — это поток для вывода сообщений журнала или информационных сообщений. stderr используется для вывода предупреждений или ошибок. Если stderr не задан, для stderr используется stdout.

Модули JavaScript
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;

const output = createWriteStream('./stdout.log');
const errorOutput = createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5
CommonJS
const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;

const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5

Глобальный объект console — это специальный объект Console, вывод которого направляется в process.stdout и process.stderr. Он эквивалентен вызову:

new Console({ stdout: process.stdout, stderr: process.stderr });
jscopy

console.assert(value[, ...message])

Добавлено в: v0.1.101
История
Версия Изменения
v10.0.0

Реализация теперь соответствует спецификации и больше не выбрасывает исключения.

  • value <any> Проверяемое значение на истинность.
  • ...message <any> Все аргументы, кроме value, используются в качестве сообщения об ошибке.

console.assert() выводит сообщение, если value является ложным или не задано. Метод только выводит сообщение и никак иначе не влияет на выполнение. Вывод всегда начинается с "Assertion failed". Если задано, message форматируется с помощью util.format().

Если value является истинным, ничего не происходит.

console.assert(true, 'does nothing');

console.assert(false, 'Whoops %s work', 'didn\'t');
// Assertion failed: Whoops didn't work

console.assert();
// Assertion failed
jscopy

console.clear()

Добавлено в: v8.3.0

Если stdout является TTY, вызов console.clear() попытается очистить TTY. Если stdout не является TTY, этот метод ничего не делает.

Конкретное действие console.clear() может различаться в разных операционных системах и типах терминалов. В большинстве операционных систем Linux console.clear() работает аналогично команде оболочки clear. В Windows console.clear() очищает только область вывода текущего окна терминала для двоичного файла Node.js.

console.count([label])

Добавлено в: v8.3.0
  • label <string> Отображаемая метка счётчика. По умолчанию: 'default'.

Поддерживает внутренний счётчик, связанный с label, и выводит в stdout количество вызовов console.count() с указанным значением label.

> console.count()
default: 1
undefined
> console.count('default')
default: 2
undefined
> console.count('abc')
abc: 1
undefined
> console.count('xyz')
xyz: 1
undefined
> console.count('abc')
abc: 2
undefined
> console.count()
default: 3
undefined
>
consolecopy

console.countReset([label])

Добавлено в: v8.3.0
  • label <string> Отображаемая метка счётчика. По умолчанию: 'default'.

Сбрасывает внутренний счётчик, связанный с label.

> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
consolecopy

console.debug(data[, ...args])

Добавлено в: v8.0.0
История
Версия Изменения
v8.10.0

Теперь console.debug является псевдонимом console.log.

  • data <any>
  • ...args <any>

Функция console.debug() является псевдонимом console.log().

console.dir(obj[, options])

Добавлено в: v0.1.101
  • obj <any>
  • options <Object>
    • showHidden <boolean> Если true, будут показаны также неперечисляемые свойства объекта и свойства-символы. По умолчанию: false.
    • depth <number> Указывает util.inspect(), сколько раз рекурсивно обходить объект при форматировании. Это удобно для просмотра больших и сложных объектов. Чтобы разрешить рекурсию без ограничений, передайте null. По умолчанию: 2.
    • colors <boolean> Если true, вывод будет оформлен с помощью цветовых кодов ANSI. Цвета можно настроить; см. настройка цветов util.inspect(). По умолчанию: false.

Применяет util.inspect() к obj и выводит полученную строку в stdout. Эта функция обходит любые пользовательские функции inspect(), определённые для obj.

console.dirxml(...data)

Добавлено в: v8.0.0
История
Версия Изменения
v9.3.0

Теперь console.dirxml вызывает console.log для своих аргументов.

  • ...data <any>

Этот метод вызывает console.log(), передавая ему полученные аргументы. Метод не выполняет форматирование XML.

console.error([data][, ...args])

Добавлено в: v0.1.100
  • data <any>
  • ...args <any>

Выводит сообщение в stderr с переводом строки. Можно передать несколько аргументов: первый используется как основное сообщение, а остальные — как значения для подстановки, аналогично printf(3) (все аргументы передаются в util.format()).

const code = 5;
console.error('error #%d', code);
// Prints: error #5, to stderr
console.error('error', code);
// Prints: error 5, to stderr
jscopy

Если в первой строке не найдены элементы форматирования (например, %d), для каждого аргумента вызывается util.inspect(), а полученные строковые значения объединяются. Дополнительные сведения см. в разделе util.format().

console.group([...label])

Добавлено в: v8.5.0
  • ...label <any>

Увеличивает отступ последующих строк на количество пробелов, равное длине groupIndentation.

Если передан один или несколько аргументов label, они сначала выводятся без дополнительного отступа.

console.groupCollapsed()

Добавлено в: v8.5.0

Псевдоним console.group().

console.groupEnd()

Добавлено в: v8.5.0

Уменьшает отступ последующих строк на количество пробелов, равное длине groupIndentation.

console.info([data][, ...args])

Добавлено в: v0.1.100
  • data <any>
  • ...args <any>

Функция console.info() является псевдонимом console.log().

console.log([data][, ...args])

Добавлено в: v0.1.100
  • data <any>
  • ...args <any>

Выводит сообщение в stdout с переводом строки. Можно передать несколько аргументов: первый используется как основное сообщение, а остальные — как значения для подстановки, аналогично printf(3) (все аргументы передаются в util.format()).

const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout
console.log('count:', count);
// Prints: count: 5, to stdout
jscopy

Дополнительные сведения см. в разделе util.format().

console.table(tabularData[, properties])

Добавлено в: v10.0.0
  • tabularData <any>
  • properties <string[]> Альтернативные свойства для построения таблицы.

Пытается построить таблицу со столбцами, соответствующими свойствам tabularData (или использовать properties), и строками, соответствующими tabularData, а затем вывести её. Если аргумент не удаётся разобрать как табличные данные, выводится сам аргумент.

// These can't be parsed as tabular data
console.table(Symbol());
// Symbol()

console.table(undefined);
// undefined

console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │ a   │ b   │
// ├─────────┼─────┼─────┤
// │ 0       │ 1   │ 'Y' │
// │ 1       │ 'Z' │ 2   │
// └─────────┴─────┴─────┘

console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
// ┌─────────┬─────┐
// │ (index) │ a   │
// ├─────────┼─────┤
// │ 0       │ 1   │
// │ 1       │ 'Z' │
// └─────────┴─────┘
jscopy

console.time([label])

Добавлено в: v0.1.104
  • label <string> По умолчанию: 'default'

Запускает таймер, с помощью которого можно вычислить длительность операции. Таймеры идентифицируются уникальным значением label. Чтобы остановить таймер и вывести в stdout прошедшее время в подходящих единицах, при вызове console.timeEnd() используйте то же значение label. Например, если прошло 3869 мс, console.timeEnd() выводит «3.869s».

console.timeEnd([label])

Добавлено в: v0.1.104
История
Версия Изменения
v13.0.0

Прошедшее время отображается в подходящих единицах измерения времени.

v6.0.0

Этот метод больше не поддерживает несколько вызовов, не соответствующих отдельным вызовам console.time(); подробности см. ниже.

  • label <string> По умолчанию: 'default'

Останавливает таймер, ранее запущенный вызовом console.time(), и выводит результат в stdout:

console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms
jscopy

console.timeLog([label][, ...data])

Добавлено в: v10.7.0
  • label <string> По умолчанию: 'default'
  • ...data <any>

Для таймера, ранее запущенного вызовом console.time(), выводит прошедшее время и остальные аргументы data в stdout:

console.time('process');
const value = expensiveProcess1(); // Returns 42
console.timeLog('process', value);
// Prints "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process');
jscopy

console.trace([message][, ...args])

Добавлено в: v0.1.104
  • message <any>
  • ...args <any>

Выводит в stderr строку 'Trace: ', затем форматированное с помощью util.format() сообщение и трассировку стека до текущей позиции в коде.

console.trace('Show me');
// Prints: (stack trace will vary based on where trace is called)
//  Trace: Show me
//    at repl:2:9
//    at REPLServer.defaultEval (repl.js:248:27)
//    at bound (domain.js:287:14)
//    at REPLServer.runBound [as eval] (domain.js:300:12)
//    at REPLServer.<anonymous> (repl.js:412:12)
//    at emitOne (events.js:82:20)
//    at REPLServer.emit (events.js:169:7)
//    at REPLServer.Interface._onLine (readline.js:210:10)
//    at REPLServer.Interface._line (readline.js:549:8)
//    at REPLServer.Interface._ttyWrite (readline.js:826:14)
jscopy

console.warn([data][, ...args])

Добавлено в: v0.1.100
  • data <any>
  • ...args <any>

Функция console.warn() является псевдонимом console.error().

Методы, доступные только в инспекторе

Следующие методы доступны в общей API движка V8, но ничего не отображают, если не используются вместе с инспектором (флаг --inspect).

console.profile([label])

Добавлено в: v8.0.0
  • label <string>

Этот метод ничего не отображает, если не используется в инспекторе. Метод console.profile() запускает профилирование загрузки ЦП JavaScript с необязательной меткой, которое продолжается до вызова console.profileEnd(). После этого профиль добавляется на панель Profile инспектора.

console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
jscopy

console.profileEnd([label])

Добавлено в: v8.0.0
  • label <string>

Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущий сеанс профилирования загрузки ЦП JavaScript, если он был запущен, и выводит отчёт на панель Profiles инспектора. Пример см. в разделе console.profile().

Если вызвать этот метод без метки, будет остановлен последний запущенный профиль.

console.timeStamp([label])

Добавлено в: v8.0.0
  • label <string>

Этот метод ничего не отображает, если не используется в инспекторе. Метод console.timeStamp() добавляет событие с меткой 'label' на панель Timeline инспектора.

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/console.html

Spec-Zone.ru

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