Консоль
Исходный код: 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<булево> Игнорировать ошибки при записи в подлежащие потоки. По умолчанию:true. -
colorMode<булево> | <строка> Включить поддержку цвета для этого экземпляра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<булево> Еслиtrue, то неперечисляемые и символьные свойства объекта также будут отображены. По умолчанию:false. -
depth<число> Указываетutil.inspect()на количество рекурсий при форматировании объекта. Это полезно для проверки больших сложных объектов. Чтобы сделать рекурсию бесконечной, передайтеnull. По умолчанию:2. -
colors<булево> Если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<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' │
// └─────────┴─────┘ copy
console.time([label])
-
label<string> По умолчанию:'default'
Запускает таймер, который используется для расчета длительности операции. Таймеры идентифицируются по уникальному label. Используйте тот же label при вызове console.timeEnd() для остановки таймера и вывода затраченного времени в подходящих единицах времени в stdout. Например, если затраченное время составляет 3869 мс, console.timeEnd() отображает "3.869с".
console.timeEnd([label])
-
label<string> По умолчанию:'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().
Методы только для инспектора
Следующие методы экспонируются движком V8 в общем API, но не отображают ничего, если не используются совместно с инспектором --inspect (флаг).
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. copy
console.profileEnd([label])
-
label<string>
Этот метод ничего не отображает, если не используется в инспекторе. Останавливает текущую сессию профилирования JavaScript CPU, если она запущена, и выводит отчет на панель Профили инспектора. См. пример в console.profile().
Если этот метод вызывается без метки, останавливается последний запущенный профиль.
console.timeStamp([label])
-
label<string>
Этот метод ничего не отображает, если не используется в инспекторе. Метод 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-v18.x/docs/api/console.html