Консоль
Модуль 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
Класс Console может быть использован для создания простого логгера с настраиваемыми потоками вывода, и к нему можно получить доступ, используя require('console').Console или console.Console:
const Console = require('console').Console;
const Console = console.Console;
new Console(stdout[, stderr])
Создаёт новый 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 истинным значением. Если нет, выбрасывается 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(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.dir(obj[, options])
-
obj<любое> -
options<Объект>-
showHidden<логическое> -
depth<число> -
colors<логическое>
-
Использует util.inspect() для obj и выводит полученную строку в stdout. Эта функция опускает любую пользовательскую функцию inspect() , определённую в obj . Опциональный объект options может быть передан для изменения определённых аспектов форматированной строки:
-
showHidden- еслиtrue, то неперечисляемые и символьные свойства объекта также будут показаны. По умолчаниюfalse. -
depth- сообщаетutil.inspect()о том, сколько раз рекурсировать при форматировании объекта. Это полезно для проверки больших сложных объектов. По умолчанию2. Чтобы сделать рекурсию бесконечной, передайтеnull. -
colors- еслиtrue, то вывод будет стилизован с помощью ANSI-кодов цветов. По умолчаниюfalse. Цвета настраиваются; см. настройка цветовutil.inspect().
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.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.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])
Выводит в 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().
© 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-v6.x/docs/api/console.html