Node.js console.log vs console.info

91

Was ist der Vorteil von console.logvs console.info? Oder einer der anderen Konsolenbefehle?

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

vs.

console.log("log");

Ich dachte, es könnte die Farbe der Ausgabe ändern oder eine Art Etikett verketten, aber sie scheinen alle dasselbe zu tun. Und laut Dokumentation hier:

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

sie scheinen alle dasselbe zu tun wie console.log

seantomburke
quelle
Mögliches Duplikat von: stackoverflow.com/questions/14437428/…
Craig Wayne
2
Einige Tipps: Sie können Farben verwenden, um Folgendes besser zu sehen: console.log ('% c Beispieltext', 'Farbe: Grün;'); Oder fügen Sie dem Text eine VAR hinzu, indem Sie: console.log (`Sample $ {variable}`, 'color: green;');
Gilberto B. Terra Jr.

Antworten:

81

Gemäß der Dokumentation, mit der Sie verknüpft sind console.errorund zu der Sie console.warnausgegeben haben stderr. Die anderen geben an aus stdout.

Wenn Sie Rohrleitungen oder Umleitungen von node.jsder Differenz durchführen, ist dies wichtig.

Es ist viel JavaScript geschrieben, um sowohl im Browser als auch im Browser ausgeführt zu werden Node.js. Wenn der Knoten die vollständige Konsole implementiert, wird eine größere Code-Kreuzkompatibilität ermöglicht.

In den meisten Browsern werden diese nicht nur in verschiedenen Farben protokolliert, sondern Sie können auch filtern, um bestimmte Nachrichten anzuzeigen.

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Jeremy J Starcher
quelle
Vielen Dank! Es war der Browser, in dem es anders angezeigt wird. Ich habe im Terminal nach Farbänderungen gesucht.
Seantomburke
2
In node( 8.11.4) und Chrome 67 gibt es auch console.debug(und wahrscheinlich auch frühere Versionen). debugrangiert darunter log.
Marcus Junius Brutus
41

console.log() ist kürzer als console.info()

Sie sind dasselbe, und das ist der einzige Vorteil.

Geben Sie hier die Bildbeschreibung ein

Max
quelle
65
Ich stimme ab, weil "das ist der einzige Vorteil" einfach nicht wahr und ziemlich kurzsichtig ist. Die Methoden haben zwar genau die gleiche Implementierung, aber unterschiedliche Bedeutung . Mit der Konsole können Sie beispielsweise die Filterung auf Protokollebene trivial implementieren.
Rixo
4
console.log = stdout, während console.error = stderr
Craig Wayne
9
developer.mozilla.org/en-US/docs/Web/API/Console/info - "In Firefox und Chrome wird neben diesen Elementen im Protokoll der Webkonsole
ed
4
@ EdwardSammutAlessi Ich verwende Chrome und konnte das i-Symbol nicht neu erstellen und
anzeigen lassen
Ein Datenpunkt: Firefox 78: Gibt ⓘ (i im Kreis) vor der Ausgabe von log.info aus. Chrome 84: nicht.
Tom Hundt
33

Während console.logund console.infomöglicherweise nicht anders, gibt es andere Verwendungszwecke als das bloße Färben. Wenn Sie beispielsweise einen Linter wie eslint verwenden, können Sie festlegen console.log, dass eine Warnmeldung angezeigt wird . Angenommen, Sie möchten nur console.logfür Ihre Entwicklungszwecke und console.infofür Informationen verwenden, die Endbenutzer möglicherweise benötigen. Mit einem Linter haben Sie jetzt eine sichtbare und direkte Erinnerung an Ihre temporäre console.logDatei, die Sie bei der Entwicklung unterstützt, aber vor dem Festschreiben / Veröffentlichen entfernt werden muss.

Figidon
quelle
3
Ich weiß nicht, warum ich diese Antwort passender fand als alle anderen, nette @Figidon.
Shreyan Mehta
1
Ich stimme zu. Tolle Lösung für die Verwendung mit eslint für Entwickler und Produktionsmodus. Sie dürfen console.log nicht übergeben! (Stab und Schwert in der Hand)
Tomas Vancoillie
25

Laut den Dokumenten ist es ziemlich klar.

console.info ([data], [...]) # Wie console.log.

console.error ([data], [...]) # Wie console.log, wird jedoch in stderr gedruckt.

console.warn ([data], [...]) # Wie console.error.

Dies bedeutet, dass es keinen Vorteil oder Nachteil gibt. info== logund warn== error. Es sei denn , Sie drucken möchten stderr, infound oder logarbeiten werden .

Sterling Archer
quelle
23

Optisch kein Unterschied tatsächlich unter console.log, console.info, console.warnsowie in console.errorBezug auf die Server - Seite (Terminal) .

Allerdings gibt es leichte Module , die addieren blau, orange und rote Farben für console.info, console.warnsowie console.errorjeweils. Auf diese Weise verhält sich die Konsolen-API wie clientseitig.

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

Geben Sie hier die Bildbeschreibung ein

Abdennour TOUMI
quelle
9

Ein weiteres Detail zusätzlich zu der akzeptierten Antwort: In Chrome und FireFox wird den console.infoProtokollzeilen ein kleines i- Symbol vorangestellt, während dies bei den console.logZeilen nicht der Fall ist . warnund errorLinien wird ein kleines Dreieck bzw. x vorangestellt .

Bill Hoag
quelle
Wie an anderer Stelle beobachtet: Firefox 78: Gibt ⓘ (i im Kreis) vor der Ausgabe von log.info aus. Chrome 84: nicht
Tom Hundt
3

stdin Ein lesbarer Stream zum Lesen von Benutzereingaben.

stdout Ein beschreibbarer Stream, entweder synchron oder asynchron.

stderr Ein blockierender synchroner beschreibbarer Stream für Fehlermeldungen.

Die stdout- oder nicht blockierenden Funktionen sind: console.log, console.info, util.puts, util.print und Stderr.

Die blockierenden Funktionen sind: console.warn, console.error, util.debug und process.stdin (ein lesbarer Stream zum Abrufen von Benutzereingaben).

Avinash Maurya
quelle
1

Es wurde festgestellt, dass Protokoll und Informationen im Grunde dasselbe sind, aber ich bin mir nicht sicher, ob dies die Frage vollständig beantwortet:

Was ist der Vorteil der Verwendung von console.log gegenüber console.info?

Ein Vorteil, abgesehen von dem, was bereits erwähnt wurde, ist, dass Sie jedes für einen anderen Zweck verwenden können. Beispielsweise können Sie console.log nur zum schnellen Debuggen und Ausspucken von Dingen an die Konsole verwenden, während Sie console.info für permanente Nachrichten verwenden können, die Sie in Ihrem Code an die Konsole ausgeben möchten, z. B. Informationen zum aktuellen App-Status . Wenn Sie dann eine Situation haben, in der ein zufälliges Objekt in Ihrer Konsole gedruckt wird und Sie versehentlich irgendwo eine Protokollanweisung hinterlassen haben, können Sie eine globale Suche nach 'console.log' durchführen, jede Instanz löschen und Vertrauen haben Sie haben nichts Wichtiges gelöscht, das Sie dort belassen wollten.

dallin
quelle
0

Mit den verschiedenen Protokollierungsstufen können Sie den Geräuschpegel in Ihrer Konsole verwalten: In den Devtools Firefox (ich verwende derzeit 78) und Chrome (84) können Sie mit der js-Konsole auswählen, welche "Debug-Stufe" der Ausgabe Sie möchten sehen. FF können Sie die Sichtbarkeit umschalten console.error, .warn, .log, .info, und .debugNachrichten für jede einzelne Tasten klicken (die Ihnen zeigen , wie viele wurden unterdrückt, wenn „off“), während Chrome ein Dropdown mit Häkchen neben den Elementen hat ( .infound .logwerden durch die "Info" und .debugvon "Verbose"). Das Chrome-Dropdown-Label ("Alle Ebenen" oder was auch immer Sie einstellen) wird rot, wenn die Ausgabe unterdrückt wurde.

Tom Hundt
quelle
0

Ich habe gesehen, wo console.logfür die vorübergehende Protokollierung von Statusinformationen zum Debuggen ist.

console.info ist eine dauerhaftere Sache - zum Beispiel zu sagen, auf welchem ​​Port etwas läuft und was Sie nach dem Debuggen nicht ausschneiden würden.

Dies macht es einfach, Ihren Code für das Festschreiben zu bereinigen. Sie können sogar festlegen, dass Ihr Linter eine Regel hat, die verhindert, dass console.log festgeschrieben wird.

RobKohr
quelle