Skip to content

Console

[Стабильно: 2 - Стабильно]

Стабильно: 2 Стабильность: 2 - Стабильно

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

Модуль 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:

js
console.log('hello world');
// Выводит: hello world, в stdout
console.log('hello %s', 'world');
// Выводит: hello world, в stdout
console.error(new Error('Whoops, something bad happened'));
// Выводит сообщение об ошибке и трассировку стека в 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!`);
// Выводит: Danger Will Robinson! Danger!, в stderr

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

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

myConsole.log('hello world');
// Выводит: hello world, в out
myConsole.log('hello %s', 'world');
// Выводит: hello world, в out
myConsole.error(new Error('Whoops, something bad happened'));
// Выводит: [Error: Whoops, something bad happened], в err

const name = 'Will Robinson';
myConsole.warn(`Danger ${name}! Danger!`);
// Выводит: Danger Will Robinson! Danger!, в err

Класс: Console

[История изменений]

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

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

js
import { Console } from 'node:console';
js
const { Console } = require('node:console');
js
const { Console } = console;

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

new Console(options)

[История изменений]

ВерсияИзменения
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> Указывает параметры, которые передаются в util.inspect().
    • groupIndentation <number> Установите отступ для группы. По умолчанию: 2.

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

js
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
js
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. Это эквивалентно вызову:

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

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

[История]

ВерсияИзменения
v10.0.0Реализация теперь соответствует спецификации и больше не выбрасывает исключения.
v0.1.101Добавлено в: v0.1.101
  • value <any> Значение, проверяемое на истинность.
  • ...message <any> Все аргументы, кроме value, используются в качестве сообщения об ошибке.

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

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

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

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

console.assert();
// Assertion failed

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.

js
> 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
>

console.countReset([label])

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

  • label <string> Метка для счетчика. По умолчанию: 'default'.

Сбрасывает внутренний счетчик, специфичный для label.

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

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

[История]

ВерсияИзменения
v8.10.0console.debug теперь является псевдонимом для console.log.
v8.0.0Добавлено в версии: v8.0.0

Функция 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)

[История]

ВерсияИзменения
v9.3.0console.dirxml теперь вызывает console.log для своих аргументов.
v8.0.0Добавлено в: v8.0.0

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

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

Добавлено в: v0.1.100

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

js
const code = 5;
console.error('ошибка #%d', code);
// Выводит: ошибка #5, в stderr
console.error('ошибка', code);
// Выводит: ошибка 5, в stderr

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

console.group([...label])

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

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

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

console.groupCollapsed()

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

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

console.groupEnd()

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

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

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

Добавлено в: v0.1.100

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

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

Добавлено в: v0.1.100

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

js
const count = 5;
console.log('count: %d', count);
// Выводит: count: 5, в stdout
console.log('count:', count);
// Выводит: count: 5, в stdout

Смотрите util.format() для получения дополнительной информации.

console.table(tabularData[, properties])

Добавлено в: v10.0.0

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

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

js
// Это не может быть проанализировано как табличные данные
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' │
// └─────────┴─────┘

console.time([label])

Добавлено в: v0.1.104

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

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

console.timeEnd([label])

[История]

ВерсияИзменения
v13.0.0Прошедшее время отображается в подходящих единицах времени.
v6.0.0Этот метод больше не поддерживает несколько вызовов, которые не соответствуют отдельным вызовам console.time(); подробности см. ниже.
v0.1.104Добавлено в: v0.1.104
  • label <string> По умолчанию: 'default'

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

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

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

Добавлено в: v10.7.0

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

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

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

Добавлено в: v0.1.104

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

js
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)

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

Добавлено в версии: v0.1.100

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

Методы, работающие только с отладчиком

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

console.profile([label])

Добавлено в версии: v8.0.0

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

js
console.profile('MyLabel');
// Какой-то код
console.profileEnd('MyLabel');
// Добавляет профиль 'MyLabel' на панель Profiles отладчика.

console.profileEnd([label])

Добавлено в версии: v8.0.0

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

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

console.timeStamp([label])

Добавлено в версии: v8.0.0

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