Node.js console.log vs console.info

92

¿Cuál es el beneficio de usar console.logvs console.info? ¿O cualquiera de los otros comandos de la consola para el caso?

console.info("info");
console.error("error");
console.warn("warn");

vs

console.log("log");

Pensé que podría cambiar el color de la salida o concatenar algún tipo de etiqueta, pero parece que todos hacen lo mismo. Y de acuerdo con la documentación aquí:

https://nodejs.org/api/console.html#console_console_info_data

parece que todos hacen lo mismo que console.log

seantomburke
fuente
Posible duplicado de: stackoverflow.com/questions/14437428/…
Craig Wayne
3
Algunos consejos: Puede usar colores para tener una mejor vista de: console.log ('% c Sample Text', 'color: green;'); O agregue algún VAR en el texto usando: console.log (`Sample $ {variable}`, 'color: green;');
Gilberto B. Terra Jr.
Gracias, no sabía que también funcionaba en el nodo js

Respuestas:

81

Según la documentación a la que vinculó console.errory los console.warnresultados stderr. Los demás salen a stdout.

Si está haciendo canalizaciones o redireccionamientos desde node.jsla diferencia es importante.

Hay mucho JavaScript escrito para ejecutarse tanto en el navegador como en Node.js. Hacer que el nodo implemente la consola completa permite una mayor compatibilidad cruzada de código.

En la mayoría de los navegadores, no solo se registran en diferentes colores, sino que también puede filtrar para ver mensajes específicos.

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Jeremy J Starcher
fuente
¡Gracias! Fue el navegador donde se muestra de manera diferente. Estaba buscando en la terminal los cambios de color.
seantomburke
2
En node( 8.11.4) y Chrome 67, también hay console.debug(y muy probablemente también versiones anteriores). debugrangos debajo log.
Marcus Junius Brutus
41

console.log() es más corto que console.info()

Son lo mismo y esa es la única ventaja.

ingrese la descripción de la imagen aquí

Max
fuente
65
Voto en contra porque "esa es la única ventaja" simplemente no es cierto y es bastante miope. Los métodos pueden tener exactamente la misma implementación, pero tienen un significado diferente . La consola le permite implementar el filtrado de nivel de registro de manera trivial, por ejemplo.
rixo
4
console.log = stdout, mientras que console.error = stderr
Craig Wayne
9
developer.mozilla.org/en-US/docs/Web/API/Console/info - "En Firefox y Chrome, se muestra un pequeño icono" i "junto a estos elementos en el registro de la consola web" - image.ibb .co / gYrZHe / infolog.png
ed
4
@EdwardSammutAlessi Estoy usando Chrome y no pude recrear y hacer que aparezca el ícono i
chevybow
Un punto de datos: Firefox 78: imprime ⓘ (i en círculo) antes de la salida log.info. Chrome 84: no lo hace.
Tom Hundt
34

Si bien console.logy console.infopuede que no sea diferente, existen otros usos, excepto la mera coloración. Por ejemplo, cuando usa un linter como eslint, puede configurar console.logpara proporcionar un mensaje de advertencia. Supongamos que solo desea utilizarlo console.logcon fines de desarrollo y utilizarlo console.infopara la información que los usuarios finales puedan necesitar. Con un linter, ahora tiene un recordatorio visible y directo de su temporal console.logque lo ayuda durante el desarrollo, pero debe eliminarse antes de la confirmación / publicación.

Figidon
fuente
3
No sé por qué encontré esta respuesta más apropiada que todas las demás, buena @Figidon.
Shreyan Mehta
1
Estoy de acuerdo. Excelente solución para usar con eslint para el modo de desarrollo y producción. ¡No pasará console.log! (bastón y espada en mano)
Tomas Vancoillie
26

Según los documentos , está bastante claro.

console.info ([data], [...]) # Igual que console.log.

console.error ([data], [...]) # Igual que console.log pero imprime en stderr.

console.warn ([data], [...]) # Igual que console.error.

Esto significa que no hay ventajas ni desventajas. info== logy warn== error. A menos que desee imprimir stderr, infoo logfuncionará.

Arquero esterlina
fuente
23

Visualmente, no hay diferencia entre realidad console.log, console.info, console.warn, así como console.erroren relación con el lado del servidor (terminal) .

Sin embargo, hay módulos livianos que agregan colores azul, naranja y rojo para console.info, console.warnasí como console.errorrespectivamente. Por eso, la API de la consola se comporta como del lado del cliente.

 npm i console-info console-warn console-error --save-dev;

ingrese la descripción de la imagen aquí

Abdennour TOUMI
fuente
9

Un detalle más además de la respuesta aceptada: en Chrome y FireFox, las console.infolíneas de registro tienen como prefijo un pequeño ícono de i , mientras que las console.loglíneas no. warny las errorlíneas tienen como prefijo un pequeño triángulo y una x , respectivamente.

Bill Hoag
fuente
Como se observó en otra parte: Firefox 78: imprime ⓘ (i en círculo) antes de la salida de log.info. Chrome 84: no lo hace
Tom Hundt
3

stdin Una secuencia legible para leer la entrada del usuario.

stdout Una secuencia de escritura, ya sea de forma sincrónica o asincrónica.

stderr Un flujo de escritura sincrónico de bloqueo destinado a mensajes de error.

Las funciones stdout o sin bloqueo son: console.log, console.info, util.puts, util.print y Stderr.

Las funciones de bloqueo son: console.warn, console.error, util.debug y process.stdin (una secuencia legible para obtener la entrada del usuario).

Avinash Maurya
fuente
1

Se ha establecido que el registro y la información son básicamente lo mismo, pero no estoy seguro de que responda completamente a la pregunta:

¿Cuál es el beneficio de usar console.log frente a console.info?

Un beneficio, además de lo que ya se ha mencionado, es que puede usar cada uno para un propósito diferente. Por ejemplo, puede usar console.log solo para depurar rápidamente y escupir cosas en la consola, mientras que puede usar console.info para los mensajes permanentes que desea enviar a la consola en su código, como información sobre el estado actual de la aplicación . Luego, cuando tenga una situación en la que se imprima un objeto aleatorio en su consola y se dé cuenta de que ha dejado una declaración de registro en algún lugar por accidente, puede hacer una búsqueda global de 'console.log' y eliminar cada instancia y tener confianza no eliminó nada importante que pretendía dejar allí.

dallin
fuente
0

Los diferentes niveles de registro le permiten administrar el nivel de ruido en su consola: tanto en las herramientas de desarrollo de Firefox (estoy usando 78 en este momento) como en Chrome (84), la consola js le permite elegir qué "nivel de depuración" de salida desea ver. FF le permite alternar la visibilidad de console.error, .warn, .log, .info, y .debuglos mensajes haciendo clic en botones individuales para cada uno (que muestran cuántos fueron suprimidos, cuando "off"), mientras que Chrome tiene un desplegable con marcas de verificación junto a los artículos ( .infoy .logson controlados por el "Info", y .debugpor "Verbose"). La etiqueta desplegable de Chrome ("Todos los niveles" o lo que establezca) se vuelve roja si se suprimió la salida.

Tom Hundt
fuente
0

He visto dónde console.logestá el registro temporal de información de estado para depurar.

console.info es algo más permanente, como decir en qué puerto se está ejecutando algo y algo que no cortaría una vez que haya terminado de depurar.

Esto facilita la limpieza de su código para confirmarlo. Incluso puede hacer que su linter tenga una regla para evitar que se confirme console.log.

RobKohr
fuente