Консоль
Исходный код: 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. Это связано с тем, что поток зависит от базовой платформы и конфигурации стандартных потоков текущего процесса. Дополнительные сведения см. в примечании о вводе-выводе процесса.
Пример использования глобального объекта 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 copy Пример использования класса 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 copy Класс: Console
Класс Console можно использовать для создания простого регистратора с настраиваемыми потоками вывода. К нему можно обратиться с помощью require('node:console').Console или console.Console (либо соответствующих деструктурированных вариантов):
Модули JavaScript
import { Console } from 'node:console';CommonJS
const { Console } = require('node:console');const { Console } = console; copy
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> Задает параметры, передаваемые вutil.inspect(). -
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 5CommonJS
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 }); copy
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 copy
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
> copy
console.countReset([label])
-
label<string> Отображаемая метка счетчика. По умолчанию:'default'.
Сбрасывает внутренний счетчик, уникальный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
> copy
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 copy Если в первой строке нет элементов форматирования (например, %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 copy Дополнительные сведения см. в разделе 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' │
// └─────────┴─────┘ copy
console.time([label])
-
label<string> По умолчанию:'default'
Запускает таймер, с помощью которого можно измерить длительность операции. Таймеры идентифицируются уникальным значением label. Чтобы остановить таймер и вывести прошедшее время в подходящих единицах в stdout, передайте то же значение label при вызове console.timeEnd(). Например, если прошло 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 copy
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'); copy
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) copy
console.warn([data][, ...args])
Функция console.warn() является псевдонимом console.error().
Методы, доступные только в инспекторе
Следующие методы предоставляются движком V8 в общем API, но ничего не отображают, если не используются вместе с инспектором (флаг --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. copy
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/dist/latest-v20.x/docs/api/console.html