Консоль
Модуль 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: 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][, ignoreerrors])
new Console(options)
-
options<Объект>-
stdout<stream.Writable> -
stderr<stream.Writable> -
ignoreErrors<boolean> Игнорировать ошибки при записи в подлежащие потоки. По умолчанию:true. -
colorMode<boolean> | <строка> Включить поддержку цвета для этого экземпляраConsole. Установка вtrueвключает отображение цвета при проверке значений, установка в'auto'сделает поддержку цвета зависящей от значения свойстваisTTYи значения, возвращаемогоgetColorDepth()для соответствующего потока. По умолчанию:'auto'.
-
Создаёт новую 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])[src]
-
value<любой> Значение, проверяемое на истинность. -
...message<любой> Все аргументы, кромеvalueиспользуются в качестве сообщения об ошибке.
Простая проверка, проверяющая, является ли value истинным. Если нет, то Assertion failed выводится в лог. Если указано, то сообщение об ошибке message форматируется с помощью util.format(), передавая все аргументы сообщения. Вывод используется в качестве сообщения об ошибке.
console.assert(true, 'does nothing'); // OK console.assert(false, 'Whoops %s work', 'didn\'t'); // Assertion failed: Whoops didn't work
Вызов console.assert() с ложным утверждением приведет только к тому, что message будет напечатан в консоли без прерывания выполнения последующего кода.
console.clear()[src]
Когда stdout является TTY, вызов console.clear() попытается очистить TTY. Когда stdout не является TTY, этот метод ничего не делает.
Конкретная операция console.clear() может различаться в зависимости от операционной системы и типа терминала. Для большинства операционных систем Linux console.clear() действует аналогично команде clear оболочки. В Windows console.clear() очистит только вывод в текущем области просмотра терминала для бинарного файла Node.js.
console.count([label])[src]
-
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])[src]
-
label<строка> Метка для отображения счётчика. По умолчанию:'default'.
Сбрасывает внутренний счётчик, специфичный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])[src]
Функция console.debug() является псевдонимом для console.log().
console.dir(obj[, options])[src]
-
obj<любой> -
options<Объект>-
showHidden<boolean> Еслиtrue, то неперечисляемые и символьные свойства объекта также будут показаны. По умолчанию:false. -
depth<число> Указываетutil.inspect(), сколько раз рекурсировать при форматировании объекта. Это полезно для проверки больших сложных объектов. Чтобы сделать рекурсию бесконечной, передайтеnull. По умолчанию:2. -
colors<boolean> Еслиtrue, то вывод будет стилизован с помощью кодов ANSI для цвета. Цвета настраиваются; см. настройка цветовutil.inspect(). По умолчанию:false.
-
Использует util.inspect() на obj и выводит полученную строку в stdout. Эта функция обходит любую пользовательскую функцию inspect() , определённую на obj.
console.dirxml(...data)[src]
-
...data<any>
Этот метод вызывает console.log(), передавая ему полученные аргументы. Обратите внимание, что этот метод не генерирует форматирование XML.
console.error([data][, ...args])[src]
Выводит в 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])[src]
-
...label<any>
Увеличивает отступ последующих строк на два пробела.
Если предоставлено одно или несколько label, они выводятся первыми без дополнительного отступа.
console.groupCollapsed()[src]
Псевдоним для console.group().
console.groupEnd()[src]
Уменьшает отступ последующих строк на два пробела.
console.info([data][, ...args])[src]
Функция console.info() является псевдонимом для console.log().
console.log([data][, ...args])[src]
Выводит в 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])[src]
-
tabularData<any> -
properties<string[]> Альтернативные свойства для построения таблицы.
Попытаться построить таблицу с колонками из свойств 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])[src]
-
label<string> По умолчанию:'default'
Запускает таймер, который можно использовать для вычисления длительности операции. Таймеры идентифицируются уникальным label. Используйте тот же label при вызове console.timeEnd() для остановки таймера и вывода затраченного времени в миллисекундах в stdout. Точность измерения времени — до долей миллисекунды.
console.timeEnd([label])[src]
-
label<string> По умолчанию:'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])[src]
Для таймера, ранее запущенного с помощью 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])[src]
Выводит в 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])[src]
Функция console.warn() является псевдонимом для console.error().
Методы, доступные только в инспекторе
Следующие методы предоставляются движком V8 в общем API, но не отображают ничего, если не используются совместно с инспектором (флажок --inspect).
console.markTimeline([label])
-
label<string> По умолчанию:'default'
Этот метод не отображает ничего, если не используется в инспекторе. Метод console.markTimeline() является устаревшей формой console.timeStamp().
console.profile([label])
-
label<string>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.profile() запускает профиль производительности JavaScript CPU с необязательной меткой до тех пор, пока не будет вызван console.profileEnd(). Профиль затем добавляется в панель Профиль инспектора.
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd([метка])
-
label<строка>
Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущую сессию профилирования производительности JavaScript CPU, если она была запущена, и выводит отчёт на панель Профили инспектора. См. console.profile() для примера.
Если этот метод вызывается без метки, останавливается последний запущенный профиль.
console.timeStamp([метка])
-
label<строка>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.timeStamp() добавляет событие с меткой 'label' на панель Временная шкала инспектора.
console.timeline([метка])
-
label<строка> По умолчанию:'default'
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.timeline() является устаревшей формой console.time().
console.timelineEnd([метка])
-
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-v10.x/docs/api/console.html