Skip to main content

Console

Stability: 2 - Stable
The node:console module provides a simple debugging console that is similar to the JavaScript console mechanism provided by web browsers. The module exports two specific components:
  • A Console class with methods such as console.log(), console.error(), and console.warn() that can be used to write to any Node.js stream.
  • A global console instance configured to write to process.stdout and process.stderr. The global console can be used without calling require('node:console').
The global console object’s methods are neither consistently synchronous like the browser APIs they resemble, nor are they consistently asynchronous like all other Node.js streams.

Example using the global 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

const name = 'Will Robinson';
console.warn(`Danger ${name}! Danger!`);
// Prints: Danger Will Robinson! Danger!, to stderr

Example using the Console class

const { Console } = require('node:console');
const { createWriteStream } = require('node:fs');

const output = createWriteStream('./stdout.log');
const errorOutput = createWriteStream('./stderr.log');

const logger = new Console({ stdout: output, stderr: errorOutput });
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5

Class: Console

The Console class can be used to create a simple logger with configurable output streams.

new Console(options)

options
Object
required
Configuration options for the Console instance

console.assert(value[, …message])

value
any
required
The value tested for being truthy
...message
any
All arguments besides value are used as error message
Writes a message if value is falsy or omitted. It only writes a message and does not otherwise affect execution. The output always starts with “Assertion failed”.
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()

When stdout is a TTY, calling console.clear() will attempt to clear the TTY. When stdout is not a TTY, this method does nothing.

console.count([label])

label
string
default:"'default'"
The display label for the counter
Maintains an internal counter specific to label and outputs to stdout the number of times console.count() has been called with the given label.
> console.count()
default: 1
> console.count('default')
default: 2
> console.count('abc')
abc: 1
> console.count('abc')
abc: 2

console.countReset([label])

label
string
default:"'default'"
The display label for the counter
Resets the internal counter specific to label.

console.debug(data[, …args])

The console.debug() function is an alias for console.log().

console.dir(obj[, options])

obj
any
required
Object to inspect
options
Object
Uses util.inspect() on obj and prints the resulting string to stdout. This function bypasses any custom inspect() function defined on obj.

console.error([data][, …args])

data
any
Primary message
...args
any
Substitution values
Prints to stderr with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution values similar to printf(3).
const code = 5;
console.error('error #%d', code);
// Prints: error #5, to stderr

console.error('error', code);
// Prints: error 5, to stderr

console.group([…label])

...label
any
Labels to print before increasing indentation
Increases indentation of subsequent lines by spaces for groupIndentation length. If one or more labels are provided, those are printed first without the additional indentation.

console.groupCollapsed()

An alias for console.group().

console.groupEnd()

Decreases indentation of subsequent lines by spaces for groupIndentation length.

console.info([data][, …args])

The console.info() function is an alias for console.log().

console.log([data][, …args])

data
any
Primary message
...args
any
Substitution values
Prints to stdout with newline. Multiple arguments can be passed, with the first used as the primary message and all additional used as substitution values similar to printf(3).
const count = 5;
console.log('count: %d', count);
// Prints: count: 5, to stdout

console.log('count:', count);
// Prints: count: 5, to stdout

console.table(tabularData[, properties])

tabularData
any
required
Data to display as a table
properties
string[]
Alternate properties for constructing the table
Try to construct a table with the columns of the properties of tabularData and rows of tabularData and log it. Falls back to just logging the argument if it can’t be parsed as tabular.
console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
// ┌─────────┬─────┬─────┐
// │ (index) │  a  │  b  │
// ├─────────┼─────┼─────┤
// │    0    │  1  │ 'Y' │
// │    1    │ 'Z' │  2  │
// └─────────┴─────┴─────┘

console.time([label])

label
string
default:"'default'"
Label for the timer
Starts a timer that can be used to compute the duration of an operation. Timers are identified by a unique label. Use the same label when calling console.timeEnd() to stop the timer and output the elapsed time in suitable time units to stdout.

console.timeEnd([label])

label
string
default:"'default'"
Label for the timer
Stops a timer that was previously started by calling console.time() and prints the result to stdout.
console.time('bunch-of-stuff');
// Do a bunch of stuff.
console.timeEnd('bunch-of-stuff');
// Prints: bunch-of-stuff: 225.438ms

console.timeLog([label][, …data])

label
string
default:"'default'"
Label for the timer
...data
any
Additional data to log
For a timer that was previously started by calling console.time(), prints the elapsed time and other data arguments to 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])

message
any
Message to display
...args
any
Substitution values
Prints to stderr the string ‘Trace: ’, followed by the util.format() formatted message and stack trace to the current position in the code.
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)
//    ...

console.warn([data][, …args])

The console.warn() function is an alias for console.error().

Inspector Only Methods

The following methods are exposed by the V8 engine in the general API but do not display anything unless used in conjunction with the inspector (--inspect flag).

console.profile([label])

label
string
Profile label
Starts a JavaScript CPU profile with an optional label until console.profileEnd() is called. The profile is then added to the Profile panel of the inspector.

console.profileEnd([label])

label
string
Profile label
Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector.

console.timeStamp([label])

label
string
Event label
Adds an event with the label ‘label’ to the Timeline panel of the inspector.