Консоль
Стабильность: 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
Класс 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)
-
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])
-
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()
Если stdout является TTY, вызов console.clear() попытается очистить TTY. Если stdout не является TTY, этот метод ничего не делает.
Конкретное действие console.clear() может различаться в разных операционных системах и типах терминалов. В большинстве операционных систем Linux console.clear() работает аналогично команде оболочки clear. В Windows console.clear() очищает только область вывода текущего окна терминала для двоичного файла Node.js.
console.count([label])
-
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])
-
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])
Функция console.debug() является псевдонимом console.log().
console.dir(obj[, options])
-
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)
-
...data<any>
Этот метод вызывает console.log(), передавая ему полученные аргументы. Метод не выполняет форматирование XML.
console.error([data][, ...args])
Выводит сообщение в 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])
-
...label<any>
Увеличивает отступ последующих строк на количество пробелов, равное длине groupIndentation.
Если передан один или несколько аргументов label, они сначала выводятся без дополнительного отступа.
console.groupCollapsed()
Псевдоним console.group().
console.groupEnd()
Уменьшает отступ последующих строк на количество пробелов, равное длине groupIndentation.
console.info([data][, ...args])
Функция console.info() является псевдонимом console.log().
console.log([data][, ...args])
Выводит сообщение в 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])
-
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])
-
label<string>По умолчанию:'default'
Запускает таймер, с помощью которого можно вычислить длительность операции. Таймеры идентифицируются уникальным значением label. Чтобы остановить таймер и вывести в stdout прошедшее время в подходящих единицах, при вызове console.timeEnd() используйте то же значение label. Например, если прошло 3869 мс, console.timeEnd() выводит «3.869s».
console.timeEnd([label])
-
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])
Для таймера, ранее запущенного вызовом 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])
Выводит в 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])
Функция console.warn() является псевдонимом console.error().
Методы, доступные только в инспекторе
Следующие методы доступны в общей API движка V8, но ничего не отображают, если не используются вместе с инспектором (флаг --inspect).
console.profile([label])
-
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])
-
label<string>
Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущий сеанс профилирования загрузки ЦП JavaScript, если он был запущен, и выводит отчёт на панель Profiles инспектора. Пример см. в разделе console.profile().
Если вызвать этот метод без метки, будет остановлен последний запущенный профиль.
console.timeStamp([label])
-
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