Console
[Stable: 2 - Stable]
Stable: 2 Стабильность: 2 - Стабильный
Исходный код: lib/console.js
Модуль node:console
предоставляет простую консоль отладки, похожую на механизм консоли JavaScript, предоставляемый веб-браузерами.
Модуль экспортирует два конкретных компонента:
- Класс
Console
с такими методами, какconsole.log()
,console.error()
иconsole.warn()
, которые можно использовать для записи в любой поток Node.js. - Глобальный экземпляр
console
, настроенный для записи вprocess.stdout
иprocess.stderr
. Глобальныйconsole
можно использовать без вызоваrequire('node:console')
.
Предупреждение: Методы глобального объекта console не являются ни последовательно синхронными, как API браузера, на которые они похожи, ни последовательно асинхронными, как все другие потоки Node.js. Программы, которые хотят зависеть от синхронного / асинхронного поведения функций консоли, должны сначала выяснить природу потока поддержки консоли. Это связано с тем, что поток зависит от базовой платформы и стандартной конфигурации потока текущего процесса. Дополнительную информацию см. в примечании о вводе-выводе процесса.
Пример использования глобального console
:
console.log('hello world')
// Выводит: hello world, в stdout
console.log('hello %s', 'world')
// Выводит: hello world, в stdout
console.error(new Error('Ой, случилось что-то плохое'))
// Выводит сообщение об ошибке и трассировку стека в stderr:
// Error: Ой, случилось что-то плохое
// at [eval]:5:15
// at Script.runInThisContext (node:vm:132:18)
// at Object.runInThisContext (node:vm:309:38)
// at node:internal/process/execution:77:19
// at [eval]-wrapper:6:22
// at evalScript (node:internal/process/execution:76:60)
// at node:internal/main/eval_string:23:3
const name = 'Уилл Робинсон'
console.warn(`Опасность ${name}! Опасность!`)
// Выводит: Опасность Уилл Робинсон! Опасность!, в stderr
Пример использования класса Console
:
const out = getStreamSomehow()
const err = getStreamSomehow()
const myConsole = new console.Console(out, err)
myConsole.log('hello world')
// Выводит: hello world, в out
myConsole.log('hello %s', 'world')
// Выводит: hello world, в out
myConsole.error(new Error('Ой, случилось что-то плохое'))
// Выводит: [Error: Ой, случилось что-то плохое], в err
const name = 'Уилл Робинсон'
myConsole.warn(`Опасность ${name}! Опасность!`)
// Выводит: Опасность Уилл Робинсон! Опасность!, в err
Класс: Console
[История]
Версия | Изменения |
---|---|
v8.0.0 | Ошибки, возникающие при записи в нижележащие потоки, теперь будут игнорироваться по умолчанию. |
Класс Console
можно использовать для создания простого логгера с настраиваемыми выходными потоками. Доступ к нему можно получить с помощью require('node:console').Console
или console.Console
(или их деструктурированных аналогов):
import { Console } from 'node:console'
const { Console } = require('node:console')
const { Console } = console
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[История]
Версия | Изменения |
---|---|
v14.2.0, v12.17.0 | Введена опция groupIndentation . |
v11.7.0 | Введена опция inspectOptions . |
v10.0.0 | Конструктор Console теперь поддерживает аргумент options , и введена опция colorMode . |
v8.0.0 | Введена опция ignoreErrors . |
options
<Object>stdout
<stream.Writable>stderr
<stream.Writable>ignoreErrors
<boolean> Игнорировать ошибки при записи в нижележащие потоки. По умолчанию:true
.colorMode
<boolean> | <string> Установить поддержку цвета для этого экземпляраConsole
. Значениеtrue
включает раскраску при проверке значений. Значениеfalse
отключает раскраску при проверке значений. Значение'auto'
делает поддержку цвета зависимой от значения свойстваisTTY
и значения, возвращаемогоgetColorDepth()
для соответствующего потока. Эту опцию нельзя использовать, если также заданоinspectOptions.colors
. По умолчанию:'auto'
.inspectOptions
<Object> Указывает параметры, которые передаются вutil.inspect()
.groupIndentation
<number> Установить отступ группы. По умолчанию:2
.
Создает новый Console
с одним или двумя экземплярами записываемого потока. stdout
является записываемым потоком для вывода логов или информации. stderr
используется для вывода предупреждений или ошибок. Если stderr
не указан, stdout
используется для stderr
.
import { createWriteStream } from 'node:fs'
import { Console } from 'node:console'
// Альтернативно
// const { Console } = console;
const output = createWriteStream('./stdout.log')
const errorOutput = createWriteStream('./stderr.log')
// Пользовательский простой логгер
const logger = new Console({ stdout: output, stderr: errorOutput })
// Используйте его как console
const count = 5
logger.log('count: %d', count)
// В stdout.log: count 5
const fs = require('node:fs')
const { Console } = require('node:console')
// Альтернативно
// const { Console } = console;
const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// Пользовательский простой логгер
const logger = new Console({ stdout: output, stderr: errorOutput })
// Используйте его как console
const count = 5
logger.log('count: %d', count)
// В stdout.log: count 5
Глобальный console
- это специальный Console
, вывод которого отправляется в process.stdout
и process.stderr
. Это эквивалентно вызову:
new Console({ stdout: process.stdout, stderr: process.stderr })
console.assert(value[, ...message])
[История]
Версия | Изменения |
---|---|
v10.0.0 | Теперь реализация соответствует спецификации и больше не выбрасывает исключения. |
v0.1.101 | Добавлено в: v0.1.101 |
value
<any> Значение, проверяемое на истинность....message
<any> Все аргументы, кромеvalue
, используются в качестве сообщения об ошибке.
console.assert()
записывает сообщение, если value
является ложным или пропущен. Он только записывает сообщение и не влияет на выполнение. Вывод всегда начинается с "Assertion failed"
. Если предоставлен, message
форматируется с помощью util.format()
.
Если value
является истинным, ничего не происходит.
console.assert(true, 'does nothing')
console.assert(false, 'Whoops %s work', "didn't")
// Assertion failed: Whoops didn't work
console.assert()
// Assertion failed
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
<string> Метка для счетчика. По умолчанию:'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])
Добавлено в: v8.3.0
label
<string> Метка для отображения счетчика. По умолчанию:'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 |
Функция console.debug()
является псевдонимом для console.log()
.
console.dir(obj[, options])
Добавлено в: v0.1.101
obj
<any>options
<Object>showHidden
<boolean> Еслиtrue
, то будут показаны также неперечисляемые и символьные свойства объекта. По умолчанию:false
.depth
<number> Указываетutil.inspect()
, сколько раз рекурсивно вызывать при форматировании объекта. Это полезно для изучения больших сложных объектов. Чтобы рекурсивно вызывать бесконечно, передайтеnull
. По умолчанию:2
.colors
<boolean> Еслиtrue
, то вывод будет стилизован кодами цветов ANSI. Цвета настраиваются; см. настройка цветовutil.inspect()
. По умолчанию:false
.
Использует util.inspect()
для obj
и выводит полученную строку в stdout
. Эта функция обходит любую пользовательскую функцию inspect()
, определенную в obj
.
console.dirxml(...data)
[История]
Версия | Изменения |
---|---|
v9.3.0 | console.dirxml теперь вызывает console.log для своих аргументов. |
v8.0.0 | Добавлено в: v8.0.0 |
...data
<any>
Этот метод вызывает console.log()
, передавая ему полученные аргументы. Этот метод не создает никакого XML-форматирования.
console.error([data][, ...args])
Добавлено в: v0.1.100
Выводит в stderr
с новой строкой. Можно передать несколько аргументов, при этом первый используется как основное сообщение, а все дополнительные используются как значения подстановки, аналогично printf(3)
(все аргументы передаются в util.format()
).
const code = 5
console.error('ошибка #%d', code)
// Выводит: ошибка #5, в stderr
console.error('ошибка', code)
// Выводит: ошибка 5, в stderr
Если элементы форматирования (например, %d
) не найдены в первой строке, то для каждого аргумента вызывается util.inspect()
, и результирующие строковые значения объединяются. Смотрите util.format()
для получения дополнительной информации.
console.group([...label])
Добавлено в: v8.5.0
...label
<any>
Увеличивает отступ последующих строк на пробелы на длину groupIndentation
.
Если предоставлены один или несколько label
, они выводятся первыми без дополнительного отступа.
console.groupCollapsed()
Добавлено в: v8.5.0
Псевдоним для console.group()
.
console.groupEnd()
Добавлено в: v8.5.0
Уменьшает отступ последующих строк на пробелы на длину groupIndentation
.
console.info([data][, ...args])
Добавлено в: v0.1.100
Функция console.info()
является псевдонимом для console.log()
.
console.log([data][, ...args])
Добавлено в: v0.1.100
Выводит в stdout
с новой строкой. Можно передавать несколько аргументов, причем первый используется в качестве основного сообщения, а все дополнительные используются в качестве значений подстановки, аналогично printf(3)
(все аргументы передаются в util.format()
).
const count = 5
console.log('count: %d', count)
// Выводит: count: 5, в stdout
console.log('count:', count)
// Выводит: count: 5, в stdout
См. util.format()
для получения дополнительной информации.
console.table(tabularData[, properties])
Добавлено в: v10.0.0
tabularData
<any>properties
<string[]> Альтернативные свойства для построения таблицы.
Попытайтесь построить таблицу со столбцами свойств tabularData
(или используйте properties
) и строками tabularData
и записать ее в лог. Если невозможно разобрать как табличные данные, то просто выводит аргумент.
// Это нельзя разобрать как табличные данные
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])
Добавлено в: v0.1.104
label
<string> По умолчанию:'default'
Запускает таймер, который можно использовать для вычисления продолжительности операции. Таймеры идентифицируются уникальной меткой label
. Используйте ту же самую метку label
при вызове console.timeEnd()
, чтобы остановить таймер и вывести прошедшее время в подходящих единицах времени в stdout
. Например, если прошедшее время составляет 3869 мс, console.timeEnd()
отобразит "3.869s".
console.timeEnd([label])
[История]
Версия | Изменения |
---|---|
v13.0.0 | Прошедшее время отображается в подходящих единицах времени. |
v6.0.0 | Этот метод больше не поддерживает несколько вызовов, не соответствующих отдельным вызовам console.time() ; подробности см. ниже. |
v0.1.104 | Добавлено в: v0.1.104 |
label
<string> По умолчанию:'default'
Останавливает таймер, который был ранее запущен путем вызова console.time()
, и выводит результат в stdout
:
console.time('bunch-of-stuff')
// Выполняем кучу всего.
console.timeEnd('bunch-of-stuff')
// Выведет: bunch-of-stuff: 225.438ms
console.timeLog([label][, ...data])
Добавлено в: v10.7.0
Для таймера, который был ранее запущен путем вызова console.time()
, выводит прошедшее время и другие аргументы data
в stdout
:
console.time('process')
const value = expensiveProcess1() // Возвращает 42
console.timeLog('process', value)
// Выведет "process: 365.227ms 42".
doExpensiveProcess2(value)
console.timeEnd('process')
console.trace([message][, ...args])
Добавлено в: v0.1.104
Выводит в stderr
строку 'Trace: '
, за которой следует отформатированное сообщение util.format()
и трассировка стека до текущей позиции в коде.
console.trace('Show me')
// Выведет: (трассировка стека будет отличаться в зависимости от того, где вызывается trace)
// 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
Функция console.warn()
является псевдонимом для console.error()
.
Методы только для инспектора
Следующие методы предоставляются движком V8 в общем API, но ничего не отображают, если не используются в сочетании с инспектором (флаг --inspect
).
console.profile([label])
Добавлено в: v8.0.0
label
<string>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.profile()
запускает профилирование ЦП JavaScript с необязательной меткой до вызова console.profileEnd()
. Затем профиль добавляется в панель Профиль инспектора.
console.profile('MyLabel')
// Какой-то код
console.profileEnd('MyLabel')
// Добавляет профиль 'MyLabel' на панель "Профили" инспектора.
console.profileEnd([label])
Добавлено в: v8.0.0
label
<string>
Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущую сессию профилирования ЦП JavaScript, если она была запущена, и выводит отчет на панель Профили инспектора. См. console.profile()
для примера.
Если этот метод вызывается без метки, останавливается последний запущенный профиль.
console.timeStamp([label])
Добавлено в: v8.0.0
label
<string>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.timeStamp()
добавляет событие с меткой 'label'
на панель Хронология инспектора.