# console Stability: 2 - Stable * {Object} For printing to stdout and stderr. Similar to the console object functions provided by most web browsers, here the output is sent to stdout or stderr. The console functions are synchronous when the destination is a terminal or a file (to avoid lost messages in case of premature exit) and asynchronous when it's a pipe (to avoid blocking for long periods of time). That is, in the following example, stdout is non-blocking while stderr is blocking: $ node script.js 2> error.log | tee info.log In daily use, the blocking/non-blocking dichotomy is not something you should worry about unless you log huge amounts of data. ## console.log([data][, ...]) Prints to stdout with newline. This function can take multiple arguments in a `printf()`-like way. Example: var count = 5; console.log('count: %d', count); // prints 'count: 5' If formatting elements are not found in the first string then `util.inspect` is used on each argument. See [util.format()][] for more information. ## console.info([data][, ...]) Same as `console.log`. ## console.error([data][, ...]) Same as `console.log` but prints to stderr. ## console.warn([data][, ...]) Same as `console.error`. ## console.dir(obj[, options]) Uses `util.inspect` on `obj` and prints resulting string to stdout. This function bypasses any custom `inspect()` function on `obj`. An optional *options* object may be passed that alters certain aspects of the formatted string: - `showHidden` - if `true` then the object's non-enumerable and symbol properties will be shown too. Defaults to `false`. - `depth` - tells `inspect` how many times to recurse while formatting the object. This is useful for inspecting large complicated objects. Defaults to `2`. To make it recurse indefinitely pass `null`. - `colors` - if `true`, then the output will be styled with ANSI color codes. Defaults to `false`. Colors are customizable, see below. ## console.time(label) Used to calculate the duration of a specific operation. To start a timer, call the `console.time()` method, giving it a name as only parameter. To stop the timer, and to get the elapsed time in milliseconds, just call the [`console.timeEnd()`](#console_console_timeend_label) method, again passing the timer's name as the parameter. ## console.timeEnd(label) Stops a timer that was previously started by calling [`console.time()`](#console_console_time_label) and print the result to the console. Example: console.time('100-elements'); for (var i = 0; i < 100; i++) { ; } console.timeEnd('100-elements'); // prints 100-elements: 262ms ## console.trace(message[, ...]) Print to stderr `'Trace :'`, followed by the formatted message and stack trace to the current position. ## console.assert(value[, message][, ...]) Similar to [assert.ok()][], but the error message is formatted as `util.format(message...)`. [assert.ok()]: assert.html#assert_assert_value_message_assert_ok_value_message [util.format()]: util.html#util_util_format_format