Consola
[Estable: 2 - Estable]
Estable: 2 Estabilidad: 2 - Estable
Código Fuente: lib/console.js
El módulo node:console
proporciona una consola de depuración simple que es similar al mecanismo de consola de JavaScript proporcionado por los navegadores web.
El módulo exporta dos componentes específicos:
- Una clase
Console
con métodos comoconsole.log()
,console.error()
yconsole.warn()
que se pueden usar para escribir en cualquier flujo de Node.js. - Una instancia global
console
configurada para escribir enprocess.stdout
yprocess.stderr
. Laconsole
global se puede usar sin llamar arequire('node:console')
.
Advertencia: Los métodos del objeto global console
no son consistentemente síncronos como las API del navegador a las que se parecen, ni son consistentemente asíncronos como todos los demás flujos de Node.js. Los programas que deseen depender del comportamiento síncrono / asíncrono de las funciones de la consola deben primero averiguar la naturaleza del flujo de respaldo de la consola. Esto se debe a que el flujo depende de la plataforma subyacente y la configuración del flujo estándar del proceso actual. Consulte la nota sobre E/S del proceso para obtener más información.
Ejemplo usando la console
global:
console.log('hola mundo');
// Imprime: hola mundo, a stdout
console.log('hola %s', 'mundo');
// Imprime: hola mundo, a stdout
console.error(new Error('Ups, algo malo pasó'));
// Imprime el mensaje de error y el seguimiento de la pila a stderr:
// Error: Ups, algo malo pasó
// en [eval]:5:15
// en Script.runInThisContext (node:vm:132:18)
// en Object.runInThisContext (node:vm:309:38)
// en node:internal/process/execution:77:19
// en [eval]-wrapper:6:22
// en evalScript (node:internal/process/execution:76:60)
// en node:internal/main/eval_string:23:3
const name = 'Will Robinson';
console.warn(`¡Peligro ${name}! ¡Peligro!`);
// Imprime: ¡Peligro Will Robinson! ¡Peligro!, a stderr
Ejemplo usando la clase Console
:
const out = getStreamSomehow();
const err = getStreamSomehow();
const myConsole = new console.Console(out, err);
myConsole.log('hola mundo');
// Imprime: hola mundo, a out
myConsole.log('hola %s', 'mundo');
// Imprime: hola mundo, a out
myConsole.error(new Error('Ups, algo malo pasó'));
// Imprime: [Error: Ups, algo malo pasó], a err
const name = 'Will Robinson';
myConsole.warn(`¡Peligro ${name}! ¡Peligro!`);
// Imprime: ¡Peligro Will Robinson! ¡Peligro!, a err
Clase: Console
[Historial]
Versión | Cambios |
---|---|
v8.0.0 | Los errores que se produzcan al escribir en los flujos subyacentes ahora se ignorarán de forma predeterminada. |
La clase Console
se puede utilizar para crear un registrador simple con flujos de salida configurables y se puede acceder a ella utilizando require('node:console').Console
o console.Console
(o sus contrapartes desestructuradas):
import { Console } from 'node:console';
const { Console } = require('node:console');
const { Console } = console;
new Console(stdout[, stderr][, ignoreErrors])
new Console(options)
[Historial]
Versión | Cambios |
---|---|
v14.2.0, v12.17.0 | Se introdujo la opción groupIndentation . |
v11.7.0 | Se introdujo la opción inspectOptions . |
v10.0.0 | El constructor Console ahora admite un argumento options , y se introdujo la opción colorMode . |
v8.0.0 | Se introdujo la opción ignoreErrors . |
options
<Objeto>stdout
<stream.Writable>stderr
<stream.Writable>ignoreErrors
<boolean> Ignora los errores al escribir en los flujos subyacentes. Predeterminado:true
.colorMode
<boolean> | <string> Establece el soporte de color para esta instancia deConsole
. Establecer entrue
activa el coloreado al inspeccionar valores. Establecer enfalse
desactiva el coloreado al inspeccionar valores. Establecer en'auto'
hace que el soporte de color dependa del valor de la propiedadisTTY
y del valor devuelto porgetColorDepth()
en el flujo respectivo. Esta opción no se puede utilizar si también se estableceinspectOptions.colors
. Predeterminado:'auto'
.inspectOptions
<Objeto> Especifica las opciones que se pasan autil.inspect()
.groupIndentation
<number> Establece la sangría del grupo. Predeterminado:2
.
Crea una nueva Console
con una o dos instancias de flujo de escritura. stdout
es un flujo de escritura para imprimir el registro o la salida de información. stderr
se utiliza para la salida de advertencia o error. Si no se proporciona stderr
, stdout
se utiliza para stderr
.
import { createWriteStream } from 'node:fs';
import { Console } from 'node:console';
// Alternatively
// const { Console } = console;
const output = createWriteStream('./stdout.log');
const errorOutput = 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
const fs = require('node:fs');
const { Console } = require('node:console');
// Alternatively
// const { Console } = console;
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
La console
global es una Console
especial cuya salida se envía a process.stdout
y process.stderr
. Es equivalente a llamar a:
new Console({ stdout: process.stdout, stderr: process.stderr });
console.assert(value[, ...message])
[Historial]
Versión | Cambios |
---|---|
v10.0.0 | La implementación ahora cumple con las especificaciones y ya no lanza errores. |
v0.1.101 | Añadido en: v0.1.101 |
value
<any> El valor probado para ser verdadero....message
<any> Todos los argumentos además devalue
se utilizan como mensaje de error.
console.assert()
escribe un mensaje si value
es falso u omitido. Solo escribe un mensaje y no afecta la ejecución de otra manera. La salida siempre comienza con "Assertion failed"
. Si se proporciona, message
se formatea usando util.format()
.
Si value
es verdadero, no ocurre nada.
console.assert(true, 'no hace nada');
console.assert(false, 'Oops %s trabajo', 'no');
// Assertion failed: Oops no trabajo
console.assert();
// Assertion failed
console.clear()
Añadido en: v8.3.0
Cuando stdout
es un TTY, llamar a console.clear()
intentará limpiar el TTY. Cuando stdout
no es un TTY, este método no hace nada.
La operación específica de console.clear()
puede variar entre sistemas operativos y tipos de terminales. Para la mayoría de los sistemas operativos Linux, console.clear()
funciona de manera similar al comando de shell clear
. En Windows, console.clear()
borrará solo la salida en la ventana gráfica actual del terminal para el binario de Node.js.
console.count([label])
Añadido en: v8.3.0
label
<string> La etiqueta de visualización para el contador. Predeterminado:'default'
.
Mantiene un contador interno específico de label
y emite a stdout
el número de veces que se ha llamado a console.count()
con la label
dada.
> 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])
Agregado en: v8.3.0
label
<string> La etiqueta de visualización para el contador. Predeterminado:'default'
.
Restablece el contador interno específico de label
.
> console.count('abc');
abc: 1
undefined
> console.countReset('abc');
undefined
> console.count('abc');
abc: 1
undefined
>
console.debug(data[, ...args])
[Historial]
Versión | Cambios |
---|---|
v8.10.0 | console.debug ahora es un alias para console.log . |
v8.0.0 | Agregado en: v8.0.0 |
La función console.debug()
es un alias para console.log()
.
console.dir(obj[, options])
Agregado en: v0.1.101
obj
<any>options
<Object>showHidden
<boolean> Si estrue
, también se mostrarán las propiedades no enumerables y de símbolos del objeto. Predeterminado:false
.depth
<number> Indica autil.inspect()
cuántas veces debe recurrir al formatear el objeto. Esto es útil para inspeccionar objetos grandes y complicados. Para que recurra indefinidamente, pasenull
. Predeterminado:2
.colors
<boolean> Si estrue
, la salida se estilizará con códigos de color ANSI. Los colores son personalizables; consulte personalización de los colores deutil.inspect()
. Predeterminado:false
.
Utiliza util.inspect()
en obj
e imprime la cadena resultante en stdout
. Esta función omite cualquier función inspect()
personalizada definida en obj
.
console.dirxml(...data)
[Historial]
Versión | Cambios |
---|---|
v9.3.0 | console.dirxml ahora llama a console.log para sus argumentos. |
v8.0.0 | Añadido en: v8.0.0 |
...data
<any>
Este método llama a console.log()
pasándole los argumentos recibidos. Este método no produce ningún formato XML.
console.error([data][, ...args])
Añadido en: v0.1.100
Imprime en stderr
con una nueva línea. Se pueden pasar múltiples argumentos, con el primero usado como el mensaje primario y todos los adicionales usados como valores de sustitución similar a printf(3)
(todos los argumentos son pasados a util.format()
).
const code = 5;
console.error('error #%d', code);
// Imprime: error #5, a stderr
console.error('error', code);
// Imprime: error 5, a stderr
Si los elementos de formato (p. ej., %d
) no se encuentran en la primera cadena, entonces se llama a util.inspect()
en cada argumento y los valores de cadena resultantes se concatenan. Consulte util.format()
para obtener más información.
console.group([...label])
Añadido en: v8.5.0
...label
<any>
Aumenta la indentación de las líneas siguientes en espacios para la longitud de groupIndentation
.
Si se proporciona una o más label
s, se imprimen primero sin la indentación adicional.
console.groupCollapsed()
Añadido en: v8.5.0
Un alias para console.group()
.
console.groupEnd()
Añadido en: v8.5.0
Disminuye la indentación de las líneas siguientes en espacios para la longitud de groupIndentation
.
console.info([data][, ...args])
Añadido en: v0.1.100
La función console.info()
es un alias de console.log()
.
console.log([data][, ...args])
Añadido en: v0.1.100
Imprime a stdout
con una nueva línea. Se pueden pasar múltiples argumentos, utilizándose el primero como mensaje principal y todos los adicionales como valores de sustitución similares a printf(3)
(todos los argumentos se pasan a util.format()
).
const count = 5;
console.log('count: %d', count);
// Imprime: count: 5, a stdout
console.log('count:', count);
// Imprime: count: 5, a stdout
Ver util.format()
para más información.
console.table(tabularData[, properties])
Añadido en: v10.0.0
tabularData
<any>properties
<string[]> Propiedades alternativas para construir la tabla.
Intenta construir una tabla con las columnas de las propiedades de tabularData
(o usa properties
) y las filas de tabularData
y la registra. Vuelve a registrar solo el argumento si no se puede analizar como tabular.
// Estos no se pueden analizar como datos tabulares
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])
Añadido en: v0.1.104
label
<string> Predeterminado:'default'
Inicia un temporizador que se puede utilizar para calcular la duración de una operación. Los temporizadores se identifican mediante una etiqueta
única. Utilice la misma etiqueta
al llamar a console.timeEnd()
para detener el temporizador y mostrar el tiempo transcurrido en unidades de tiempo adecuadas en stdout
. Por ejemplo, si el tiempo transcurrido es de 3869ms, console.timeEnd()
muestra "3.869s".
console.timeEnd([label])
[Historial]
Versión | Cambios |
---|---|
v13.0.0 | El tiempo transcurrido se muestra con una unidad de tiempo adecuada. |
v6.0.0 | Este método ya no admite varias llamadas que no se asignan a llamadas console.time() individuales; consulte los detalles a continuación. |
v0.1.104 | Añadido en: v0.1.104 |
label
<string> Predeterminado:'default'
Detiene un temporizador que se inició previamente llamando a console.time()
e imprime el resultado en stdout
:
console.time('bunch-of-stuff');
// Haz un montón de cosas.
console.timeEnd('bunch-of-stuff');
// Imprime: bunch-of-stuff: 225.438ms
console.timeLog([label][, ...data])
Añadido en: v10.7.0
Para un temporizador que se inició previamente llamando a console.time()
, imprime el tiempo transcurrido y otros argumentos de datos
en stdout
:
console.time('process');
const value = expensiveProcess1(); // Devuelve 42
console.timeLog('process', value);
// Imprime "process: 365.227ms 42".
doExpensiveProcess2(value);
console.timeEnd('process');
console.trace([message][, ...args])
Añadido en: v0.1.104
Imprime en stderr
la cadena 'Trace: '
, seguida del mensaje formateado util.format()
y el seguimiento de la pila hasta la posición actual en el código.
console.trace('Show me');
// Imprime: (el seguimiento de la pila variará según dónde se llame al seguimiento)
// 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])
Agregado en: v0.1.100
La función console.warn()
es un alias de console.error()
.
Métodos solo para el inspector
Los siguientes métodos son expuestos por el motor V8 en la API general pero no muestran nada a menos que se utilicen en conjunto con el inspector (flag --inspect
).
console.profile([label])
Agregado en: v8.0.0
label
<string>
Este método no muestra nada a menos que se utilice en el inspector. El método console.profile()
inicia un perfil de CPU de JavaScript con una etiqueta opcional hasta que se llama a console.profileEnd()
. El perfil se agrega entonces al panel Profile del inspector.
console.profile('MyLabel');
// Some code
console.profileEnd('MyLabel');
// Adds the profile 'MyLabel' to the Profiles panel of the inspector.
console.profileEnd([label])
Agregado en: v8.0.0
label
<string>
Este método no muestra nada a menos que se utilice en el inspector. Detiene la sesión actual de creación de perfiles de CPU de JavaScript si se ha iniciado una e imprime el informe en el panel Profiles del inspector. Vea console.profile()
para un ejemplo.
Si se llama a este método sin una etiqueta, se detiene el perfil iniciado más recientemente.
console.timeStamp([label])
Agregado en: v8.0.0
label
<string>
Este método no muestra nada a menos que se utilice en el inspector. El método console.timeStamp()
agrega un evento con la etiqueta 'label'
al panel Timeline del inspector.