Консоль
Исходный код: lib/console.js
Модуль node:console предоставляет простую консоль отладки, аналогичную механизму консоли JavaScript, предоставляемому веб-браузерами.
Модуль экспортирует два конкретных компонента:
- Класс
Consoleс методами, такими какconsole.log(),console.error(), иconsole.warn(), которые можно использовать для записи в любой поток Node.js. - Глобальный экземпляр
console, настроенный на запись вprocess.stdoutиprocess.stderr. Глобальный экземплярconsoleможет использоваться без вызоваrequire('node: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 copy Пример использования класса 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 copy Класс: Console
Класс Console может быть использован для создания простого логгера с настраиваемыми потоками вывода и может быть вызван с помощью require('node:console').Console или console.Console (или их деструктурированных аналогов):
const { Console } = require('node:console'); copy const { Console } = console; copy
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 copy Глобальный console — это специальный Console поток, вывод которого направляется в process.stdout и process.stderr. Это эквивалентно вызову:
new Console({ stdout: process.stdout, stderr: process.stderr }); copy
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 copy
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
> copy
console.countReset([label])
-
label<строка> Метка отображения для счётчика. По умолчанию:'default'.
Сбрасывает внутренний счётчик, специфичный для label.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
> copy
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 copy Если элементы форматирования (например, %d) не найдены в первой строке, то util.inspect() вызывается для каждого аргумента, а полученные строковые значения конкатенируются. Дополнительную информацию см. в util.format().
console.group([...label])
-
...label<любой>
Увеличивает отступ последующих строк на пробелы в количестве groupIndentation.
Если предоставлены один или несколько label,
они будут напечатаны вначале без дополнительного отступа.
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 copy Дополнительную информацию см. в 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' │
// └─────────┴─────┘ copy
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('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms copy
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'); copy
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) copy
console.warn([data][, ...args])
Функция console.warn() является псевдонимом для console.error().
Методы, доступные только в инспекторе
Следующие методы доступны в общем API движка V8, но ничего не отображают, если не используются совместно с инспектором (--inspect флаг).
console.profile([label])
-
label<строка>
Этот метод не отображает ничего, если не используется в инспекторе. Метод 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. copy
console.profileEnd([label])
-
label<строка>
Этот метод не отображает ничего, если не используется в инспекторе. Останавливает текущую сессию профилирования JavaScript CPU, если она запущена, и выводит отчет на панель Профили инспектора. Пример см. в 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-v20.x/docs/api/console.html