Консоль
Модуль console предоставляет простую консоль отладки, аналогичную механизму консоли JavaScript в веб-браузерах.
Модуль экспортирует две конкретные компоненты:
- Класс
Consoleс методами, такими какconsole.log(),console.error()иconsole.warn(), которые можно использовать для записи в любой поток Node.js. - Глобальный экземпляр
console, настроенный для записи вprocess.stdoutиprocess.stderr. Глобальный экземплярconsoleможет быть использован без вызоваrequire('console').
Предупреждение: методы глобального объекта 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: Whoops, something bad happened], to stderr
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 может быть использован для создания простого регистратора с настраиваемыми потоками вывода и может быть получен с помощью require('console').Console или console.Console (или их деструктурированных аналогов):
const { Console } = require('console');
const { Console } = console;
new Console(stdout[, stderr])
-
stdout<stream.Writable> -
stderr<stream.Writable>
Создает новую 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(output, 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(process.stdout, process.stderr);
console.assert(value[, message][, ...args])
-
value<any> -
message<any> -
...args<any>
Простой тест проверки, является ли value истинным значением. Если нет, выбрасывается AssertionError. Если указано, сообщение об ошибке message форматируется с помощью util.format() и используется в качестве сообщения об ошибке.
console.assert(true, 'does nothing'); // OK console.assert(false, 'Whoops %s', 'didn\'t work'); // AssertionError: Whoops didn't work
Примечание: Метод console.assert() реализован в Node.js иначе, чем метод console.assert(), доступный в браузерах.
Конкретно, в браузерах вызов console.assert() с ложным утверждением приведет к выводу message в консоль без прерывания выполнения последующего кода. В Node.js, однако, ложное утверждение вызовет исключение AssertionError.
Функциональность, приближенная к той, что реализована в браузерах, может быть реализована путем расширения Node.js' console и переопределения метода console.assert().
В следующем примере создается простой модуль, который расширяет и переопределяет поведение по умолчанию console в Node.js.
'use strict';
// Creates a simple extension of console with a
// new impl for assert without monkey-patching.
const myConsole = Object.create(console, {
assert: {
value: function assert(assertion, message, ...args) {
try {
console.assert(assertion, message, ...args);
} catch (err) {
console.error(err.stack);
}
},
configurable: true,
enumerable: true,
writable: true,
},
});
module.exports = myConsole;
Это затем может быть использовано как прямая замена встроенной консоли:
const console = require('./myConsole');
console.assert(false, 'this message will print, but no error thrown');
console.log('this will also print');
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='default'])
-
label<строка> Метка для отображения счётчика. По умолчанию:'default'.
Сбрасывает внутренний счётчик, специфичный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
-
data<any> -
...args<any>
Функция console.debug() является псевдонимом для console.log().
console.dir(obj[, options])
-
obj<any> -
options<Объект>-
showHidden<boolean> Еслиtrue, то неперечисляемые и символьные свойства объекта также будут показаны. По умолчанию:false. -
depth<число> Указываетutil.inspect(), сколько раз выполнять рекурсию при форматировании объекта. Это полезно для проверки больших сложных объектов. Чтобы сделать рекурсию бесконечной, передайтеnull. По умолчанию:2. -
colors<boolean> Еслиtrue, то вывод будет стилизован с использованием кодов ANSI-цветов. Цвета настраиваются; см. настройка цветовutil.inspect(). По умолчанию:false.
-
Использует util.inspect() для obj и выводит полученную строку в stdout. Эта функция опускает любые настраиваемые функции inspect() определенные на obj.
console.error([data][, ...args])
-
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
Если элементы форматирования (например, %d) не найдены в первой строке, вызывается util.inspect() для каждого аргумента, и результирующие строковые значения конкатенируются. Подробнее см. util.format().
console.group([...label])
-
...label<any>
Увеличивает отступ последующих строк на два пробела.
Если один или несколько label указаны, они выводятся сначала без дополнительного отступа.
console.groupCollapsed()
Псевдоним для console.group().
console.groupEnd()
Уменьшает отступ последующих строк на два пробела.
console.info([data][, ...args])
-
data<any> -
...args<any>
Функция console.info() является псевдонимом для console.log().
console.log([data][, ...args])
-
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
Дополнительную информацию см. в util.format().
console.time(label)
-
label<строка>
Запускает таймер, который можно использовать для вычисления продолжительности операции. Таймеры идентифицируются по уникальному label. Используйте тот же label при вызове console.timeEnd(), чтобы остановить таймер и вывести затраченное время в миллисекундах в stdout. Продолжительность работы таймера точна до долей миллисекунды.
console.timeEnd(label)
-
label<строка>
Останавливает таймер, который был ранее запущен с помощью вызова console.time(), и выводит результат в stdout:
console.time('100-elements');
for (let i = 0; i < 100; i++) {}
console.timeEnd('100-elements');
// prints 100-elements: 225.438ms
Примечание: начиная с Node.js v6.0.0, console.timeEnd() удаляет таймер, чтобы избежать утечек. В более старых версиях таймер сохранялся. Это позволяло вызывать console.timeEnd() несколько раз для одного и того же метки. Эта функциональность была непреднамеренной и больше не поддерживается.
console.trace([message][, ...args])
-
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])
-
data<любой> -
...args<любой>
Функция console.warn() является псевдонимом для console.error().
Методы только для инспектора
Следующие методы предоставляются движком V8 в общем API, но ничего не отображают, если не используются совместно с инспектором (--inspect флаг).
console.dirxml(object)
-
object<строка>
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.dirxml() отображает в stdout интерактивное дерево XML-представление потомков указанного object, если это возможно, или представление JavaScript, если нет. Вызов console.dirxml() для HTML- или XML-элемента эквивалентен вызову console.log().
console.markTimeline(label)
-
label<строка> По умолчанию'default'.
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.markTimeline() — устаревшая форма console.timeStamp().
console.profile([label])
-
label<строка>
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.profile() запускает профиль JavaScript CPU с необязательной меткой до вызова console.profileEnd(). Затем профиль добавляется во вкладку Profile инспектора.
console.profile('MyLabel');
// Some code
console.profileEnd();
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd()
Этот метод не отображает ничего, если не используется в инспекторе. Останавливает текущую сессию профилирования JavaScript CPU, если она была запущена, и выводит отчет во вкладку Profiles инспектора. Пример см. в console.profile().
console.table(array[, columns])
Этот метод не отображает ничего, если не используется в инспекторе. Выводит в stdout массив array в формате таблицы.
console.timeStamp([label])
-
label<строка>
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.timeStamp() добавляет событие с меткой label во вкладку Timeline инспектора.
console.timeline([label])
-
label<строка> По умолчанию'default'.
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.timeline() — устаревшая форма console.time().
console.timelineEnd([label])
-
label<строка> По умолчанию'default'.
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.timelineEnd() — устаревшая форма console.timeEnd().
© 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-v8.x/docs/api/console.html