Spec-Zone.ru › Node.js 8 LTS

Консоль

Уровень стабильности: 2 - Стабильно

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

Класс: Консоль

История
Версия Изменения
v8.0.0

Ошибки, возникающие при записи в базовые потоки, теперь игнорируются.

Класс 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])

Добавлен в: v0.1.101
  • 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()

Добавлен в: 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 <строка> Метка для отображения счётчика. По умолчанию: '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'])

Добавлен в: v8.3.0
  • label <строка> Метка для отображения счётчика. По умолчанию: 'default'.

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

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

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

История
Версия Изменения
v8.10.0

console.debug теперь является псевдонимом для console.log.

v8.0.0

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

  • data <any>
  • ...args <any>

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

console.dir(obj[, options])

Добавлен в: v0.1.101
  • 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])

Добавлен в: v0.1.100
  • 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])

Добавлен в: v8.5.0
  • ...label <any>

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

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

console.groupCollapsed()

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

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

console.groupEnd()

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

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

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

Добавлен в: v0.1.100
  • data <any>
  • ...args <any>

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

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

Добавлен в: v0.1.100
  • 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)

Добавлена в: v0.1.104
  • label <строка>

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

console.timeEnd(label)

История
Версия Изменения
v6.0.0

Этот метод больше не поддерживает несколько вызовов, которые не соответствуют отдельным вызовам console.time(); подробности см. ниже.

v0.1.104

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

  • 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])

Добавлена в: v0.1.104
  • 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])

Добавлена в: v0.1.100
  • data <любой>
  • ...args <любой>

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

Методы только для инспектора

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

console.dirxml(object)

Добавлена в: v8.0.0
  • object <строка>

Этот метод не отображает ничего, если не используется в инспекторе. Метод console.dirxml() отображает в stdout интерактивное дерево XML-представление потомков указанного object, если это возможно, или представление JavaScript, если нет. Вызов console.dirxml() для HTML- или XML-элемента эквивалентен вызову console.log().

console.markTimeline(label)

Добавлена в: v8.0.0
  • label <строка> По умолчанию 'default'.

Этот метод не отображает ничего, если не используется в инспекторе. Метод console.markTimeline() — устаревшая форма console.timeStamp().

console.profile([label])

Добавлена в: v8.0.0
  • 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()

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

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

console.table(array[, columns])

Добавлена в: v8.0.0
  • array <Массив> | <Объект>
  • columns <Массив>

Этот метод не отображает ничего, если не используется в инспекторе. Выводит в stdout массив array в формате таблицы.

console.timeStamp([label])

Добавлена в: v8.0.0
  • label <строка>

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

console.timeline([label])

Добавлена в: v8.0.0
  • label <строка> По умолчанию 'default'.

Этот метод не отображает ничего, если не используется в инспекторе. Метод console.timeline() — устаревшая форма console.time().

console.timelineEnd([label])

Добавлена в: v8.0.0
  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API