Spec-Zone.ru › Node.js 4 LTS

Консоль

Устойчивость: 2 — Стабильная

Модуль console предоставляет простую консоль отладки, аналогичную механизму консоли JavaScript, предоставляемому веб-браузерами.

Модуль экспортирует два конкретных компонента:

  • Класс Console с методами, такими как console.log(), console.error() и console.warn(), которые могут быть использованы для записи в любой поток Node.js.
  • Глобальный экземпляр console, настроенный для записи в stdout и stderr. Поскольку этот объект является глобальным, он может быть использован без вызова require('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: 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

Хотя API класса Console в основе своей разработан на базе объекта браузера console, объект Console в Node.js не предназначен для точного дублирования функциональности браузера.

Асинхронные и синхронные консоли

Функции консоли обычно асинхронны, за исключением случаев, когда местом назначения является файл. Диски быстрые, и операционные системы обычно используют кэширование с обратной записью; блокировка записи должна быть очень редким явлением, но это возможно.

Кроме того, функции консоли блокируют выполнение при выводе в TTY (терминалы) в macOS в качестве обходного решения для очень небольшого буфера размером 1 КБ в ОС. Это сделано для предотвращения переплетения между stdout и stderr.

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

Класс Console может быть использован для создания простого регистратора с настраиваемыми потоками вывода и доступен с помощью require('console').Console или console.Console:

const Console = require('console').Console;
const Console = console.Console;

new Console(stdout[, stderr])

Создаёт новую Console, передавая один или два экземпляра потоков на запись. stdout — это поток на запись для вывода журнальных или информационных сообщений. stderr используется для предупреждений или ошибок. Если stderr не передан, предупреждения и сообщения об ошибках будут отправлены в stdout.

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][, ...])

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

Простой тест утверждения, проверяющий, является ли 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.

Функциональность, приближающаяся к той, которая реализована в браузерах, может быть реализована путем расширения console Node.js и переопределения метода 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.dir(obj[, options])

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

Использует util.inspect() для obj и выводит полученную строку в stdout. Эта функция обходит любую пользовательскую функцию inspect() , определённую для obj . Дополнительный объект options может быть передан для изменения определенных аспектов отформатированной строки:

  • showHidden — если true , то неперечисляемые и символьные свойства объекта также будут показаны. По умолчанию false.

  • depth — сообщает util.inspect() сколько раз рекурсировать при форматировании объекта. Это полезно для проверки больших сложных объектов. По умолчанию 2. Для бесконечной рекурсии передайте null.

  • colors — если true, то вывод будет стилизован с помощью кодов ANSI-цветов. По умолчанию false. Цвета настраиваются; см. настройка цветов util.inspect().

console.error([data][, ...])

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

Выводит в 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.info([data][, ...])

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

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

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

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

Выводит в 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

Если элементы форматирования (например, %d) не найдены в первой строке, то для каждого аргумента вызывается util.inspect(), а полученные строковые значения конкатенируются. Подробнее см. util.format().

console.time(label)

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

Используется для расчета продолжительности определённой операции. Для запуска таймера вызовите метод console.time(), передав ему уникальное label в качестве единственного параметра. Для остановки таймера и получения затраченного времени в миллисекундах просто вызовите метод console.timeEnd(), снова передав уникальное label в качестве параметра.

console.timeEnd(label)

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

Останавливает таймер, ранее запущенный вызовом console.time(), и выводит результат в stdout:

console.time('100-elements');
for (let i = 0; i < 100; i++) {
  ;
}
console.timeEnd('100-elements');
// prints 100-elements: 262ms

console.trace(message[, ...])

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

Выводит в 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][, ...])

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

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

© 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-v4.x/docs/api/console.html

Spec-Zone.ru

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