Консоль
Исходный код: lib/console.js
Модуль 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 message and stack trace to stderr:
// Error: Whoops, something bad happened
// 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 = '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'); 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включает отображение цвета при инспектировании значений. Установка вfalseотключает отображение цвета при инспектировании значений. Установка в'auto'делает поддержку цвета зависимой от значения свойстваisTTYи значения, возвращаемогоgetColorDepth()для соответствующего потока. Этот параметр не может быть использован, если также установленinspectOptions.colors. По умолчанию:'auto'. -
inspectOptions<Объект> Указывает параметры, которые передаются вutil.inspect(). -
groupIndentation<число> Установить отступ группировки. По умолчанию:2.
-
Создаёт новый 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])
-
value<любой тип> Значение, проверяемое на истинность. -
...message<любой тип> Все аргументы, кроме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()
Если 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])
-
label<строка> Метка для отображения счётчика. По умолчанию:'default'.
Сбрасывает внутренний счётчик, специфичный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
-
data<любой тип> -
...args<любой тип>
Функция console.debug() является псевдонимом для console.log().
console.dir(obj[, options])
-
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)
-
...data<любой тип>
Этот метод вызывает console.log() , передавая ему полученные аргументы. Этот метод не создаёт XML-форматирование.
console.error([data][, ...args])
-
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.group([...label])
-
...label<любой>
Увеличивает отступ последующих строк на пробелы для groupIndentation длины.
Если предоставлен один или несколько labels, они выводятся вначале без дополнительного отступа.
console.groupCollapsed()
Псевдоним для console.group().
console.groupEnd()
Уменьшает отступ последующих строк на пробелы для groupIndentation длины.
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.table(tabularData[, properties])
-
tabularData<любой> -
properties<строковый массив> Альтернативные свойства для построения таблицы.
Попытка построить таблицу со столбцами свойств 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])
-
label<строка> По умолчанию:'default'
Запускает таймер, который можно использовать для вычисления продолжительности операции. Таймеры идентифицируются уникальным label. Используйте тот же label при вызове console.timeEnd() для остановки таймера и вывода прошедшего времени в подходящих единицах измерения в stdout. Например, если прошедшее время составляет 3869 мс, console.timeEnd() отображает «3,869 с».
console.timeEnd([label])
-
label<строка> По умолчанию:'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])
Для таймера, который был ранее запущен вызовом 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])
Выводит в 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().
Методы, доступные только в инспекторе
Следующие методы экспонируются движком V8 в общем API, но ничего не отображают, если не используются совместно с инспектором (--inspect флаг).
console.profile([label])
-
label<строка>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.profile() запускает профиль CPU JavaScript с необязательной меткой до тех пор, пока не будет вызван console.profileEnd(). Затем профиль добавляется в панель Профили инспектора.
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd([label])
-
label<строка>
Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущую сессию профилирования ЦП JavaScript, если она была запущена, и выводит отчёт на панель Профили инспектора. См. console.profile() для примера.
Если этот метод вызывается без метки, останавливается последний запущенный профиль.
console.timeStamp([label])
-
label<строка>
Этот метод ничего не отображает, если не используется в инспекторе. Метод console.timeStamp() добавляет событие с меткой 'label' на панель Временная шкала инспектора.
© 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-v16.x/docs/api/console.html