Консоль
Исходный код: lib/console.js
Модуль console предоставляет простую консоль отладки, аналогичную механизму JavaScript-консоли, предоставляемому веб-браузерами.
Модуль экспортирует два конкретных компонента:
- Класс
Consoleс методами, такими какconsole.log(),console.error()иconsole.warn(), которые могут использоваться для записи в любой поток Node.js. - Глобальный экземпляр
console, настроенный для записи вprocess.stdoutиprocess.stderr. Глобальныйconsoleможет использоваться без вызоваrequire('console').
Предупреждение: Методы глобального объекта консоли не являются последовательно синхронными, как браузерные API, которые они напоминают, и не являются последовательно асинхронными, как все остальные потоки Node.js. См. примечание о вводе-выводе процесса для получения дополнительной информации.
Пример использования глобального 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 Пример использования класса 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 Класс: Console
Класс Console может использоваться для создания простого логирования с настраиваемыми потоками вывода и может быть вызван с помощью require('console').Console или console.Console (или их деструктурированных аналогов):
const { Console } = require('console'); const { Console } = console; new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
-
options<Объект>-
stdout<stream.Writable> -
stderr<stream.Writable> -
ignoreErrors<логическое> Игнорировать ошибки при записи в базовые потоки. По умолчанию:true. -
colorMode<логическое> | <строка> Включить поддержку цвета для данного экземпляраConsole. Установка вtrueвключает отображение цвета при проверке значений. Установка вfalseотключает отображение цвета при проверке значений. Установка в'auto'делает поддержку цвета зависимой от значения свойстваisTTYи значения, возвращаемогоgetColorDepth()для соответствующего потока. Этот параметр не может быть использован, если также установленinspectOptions.colors. По умолчанию:'auto'. -
inspectOptions<Объект> Указывает параметры, передаваемые функцииutil.inspect(). -
groupIndentation<число> Установить отступ группы. По умолчанию:2.
-
Создаёт новый экземпляр Console с одним или двумя потоками записи. stdout — это поток записи для вывода логов или информации. stderr используется для вывода предупреждений или ошибок. Если stderr не указан, stdout используется для stderr.
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 }); console.assert(value[, ...message])
-
value<любой> Значение, проверяемое на истинность. -
...message<любой> Все аргументы, кроме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
console.clear()
Если stdout является TTY, вызов console.clear() попытается очистить TTY. Если stdout не является TTY, этот метод ничего не делает.
Конкретная операция console.clear() может различаться в зависимости от операционной системы и типа терминала. Для большинства операционных систем Linux console.clear() работает аналогично команде оболочки clear. В Windows console.clear() очистит только вывод в текущем терминальном окне для двоичного файла Node.js.
console.count([label])
-
label<строка> Метка отображения для счётчика. По умолчанию:'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
> console.countReset([label])
-
label<строка> Метка отображения для счётчика. По умолчанию:'default'.
Сбрасывает внутренний счётчик, специфичный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
> console.debug(data[, ...args])
Функция console.debug() является псевдонимом для console.log().
console.dir(obj[, options])
-
obj<любой> -
options<Объект>-
showHidden<логическое> Еслиtrue, то неперечисляемые свойства и символьные свойства объекта также будут показаны. По умолчанию:false. -
depth<число> Указывает функцииutil.inspect()количество рекурсий при форматировании объекта. Это полезно для проверки больших сложных объектов. Чтобы сделать бесконечную рекурсию, передайтеnull. По умолчанию:2. -
colors<логическое> Еслиtrue, то вывод будет стилизован с помощью кодов ANSI-цветов. Цвета настраиваются; см. настройка цветовutil.inspect(). По умолчанию:false.
-
Использует util.inspect() для obj и выводит полученную строку в stdout. Эта функция игнорирует любые настраиваемые функции inspect() определённые на obj.
console.dirxml(...data)
-
...data<любой>
Этот метод вызывает 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 Если элементы форматирования (например, %d) не найдены в первой строке, то util.inspect() вызывается для каждого аргумента, а полученные строковые значения конкатенируются. Дополнительную информацию см. в util.format().
console.group([...label])
-
...label<любой>
Увеличивает отступ последующих строк на пробелы для 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 Дополнительную информацию см. в util.format().
console.table(tabularData[, properties])
-
tabularData<любой> -
properties<строковый массив> Вспомогательные свойства для построения таблицы.
Попытаться построить таблицу со столбцами свойств 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' │
// └─────────┴─────┘ console.time([label])
-
label<строка> По умолчанию:'default'
Запускает таймер, который можно использовать для вычисления продолжительности операции. Таймеры идентифицируются уникальным label. Используйте тот же label при вызове console.timeEnd() для остановки таймера и вывода затраченного времени в подходящих единицах измерения в stdout. Например, если затраченное время составляет 3869 мс, console.timeEnd() отображает "3.869с".
console.timeEnd([label])
-
label<строка> По умолчанию:'default'
Останавливает таймер, который был ранее запущен вызовом console.time(), и выводит результат в stdout:
console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// prints 100-elements: 225.438ms 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'); 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) console.warn([data][, ...args])
Функция console.warn() является псевдонимом для console.error().
Методы, доступные только в инспекторе
Следующие методы предоставляются движком V8 в общем API, но ничего не отображают, если не используются совместно с инспектором (--inspect флаг).
console.profile([label])
-
label<строка>
Этот метод не отображает ничего, если он используется не в инспекторе. Метод console.profile() запускает профиль производительности JavaScript CPU с необязательной меткой до вызова console.profileEnd(). Профиль затем добавляется в панель Profile инспектора.
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector. console.profileEnd([label])
-
label<строка>
Этот метод не отображает ничего, если он используется не в инспекторе. Останавливает текущую сессию профилирования производительности JavaScript CPU, если она была запущена, и выводит отчет в панель Profiles инспектора. Пример см. в console.profile().
Если этот метод вызывается без метки, останавливается последний запущенный профиль.
console.timeStamp([label])
-
label<строка>
Этот метод не отображает ничего, если он используется не в инспекторе. Метод 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-v14.x/docs/api/console.html