Node.js console.log vs console.info

92

Jaka jest korzyść z używania console.logvs console.info? A może inne polecenia konsoli?

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

vs

console.log("log");

Pomyślałem, że może to zmienić kolor wyniku lub połączyć jakąś etykietę, ale wydaje się, że wszystkie robią to samo. I zgodnie z dokumentacją tutaj:

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

wydaje się, że wszyscy robią to samo co console.log

seantomburke
źródło
Możliwy duplikat: stackoverflow.com/questions/14437428/…
Craig Wayne,
3
Kilka wskazówek: Możesz użyć kolorów, aby mieć lepszy widok: console.log ('% c Przykładowy tekst', 'kolor: zielony;'); Lub dodaj VAR do tekstu za pomocą: console.log (`Sample $ {zmienna}`, 'color: green;');
Gilberto B. Terra Jr.
Dzięki, nie wiedziałem, że działa również na node js

Odpowiedzi:

81

Zgodnie z dokumentacją, z którą utworzyłeś link console.errori console.warndo której wyprowadziłeś stderr. Inni wychodzą do stdout.

Jeśli robisz orurowanie lub przekierowanie z node.jsróżnicy, jest to ważne.

Istnieje wiele skryptów JavaScript napisanych do uruchamiania zarówno w przeglądarce, jak i Node.js. Posiadanie węzła implementującego pełną konsolę pozwala na większą zgodność kodu.

W większości przeglądarek nie tylko logują się one w różnych kolorach, ale można także filtrować, aby zobaczyć określone komunikaty.

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Jeremy J Starcher
źródło
Dziękuję Ci! To właśnie przeglądarka wyświetlała się inaczej. Szukałem w terminalu zmian koloru.
seantomburke
2
W node( 8.11.4) i Chrome 67 jest również console.debug(i prawdopodobnie również wcześniejsze wersje). debugrangi poniżej log.
Marcus Junius Brutus
41

console.log() jest krótszy niż console.info()

Są tym samym i to jedyna zaleta.

wprowadź opis obrazu tutaj

Maks
źródło
65
Głosuję przeciw, ponieważ stwierdzenie „to jedyna zaleta” jest po prostu nieprawdziwe i dość krótkowzroczne. Metody mogą mieć dokładnie tę samą implementację, ale mają inne znaczenie . konsola pozwala na przykład w prosty sposób zaimplementować filtrowanie na poziomie dziennika.
rixo
4
console.log = stdout, while console.error = stderr
Craig Wayne
9
developer.mozilla.org/en-US/docs/Web/API/Console/info - „W przeglądarce Firefox i Chrome obok tych elementów w dzienniku konsoli internetowej wyświetlana jest mała ikona„ i ”” - image.ibb .co / gYrZHe / infolog.png
wyd.
4
@EdwardSammutAlessi używam Chrome i nie był w stanie odtworzyć i uzyskać í ikonę pojawiać
chevybow
Jeden punkt danych: Firefox 78: wyświetla ⓘ (i w kółku) przed wyjściem log.info. Chrome 84: nie.
Tom Hundt
34

Chociaż console.logi console.infomogą się nie różnić, istnieją inne zastosowania oprócz zwykłego kolorowania. Na przykład, gdy używasz lintera, takiego jak eslint, możesz ustawić console.logwyświetlanie komunikatu ostrzegawczego. Załóżmy, że chcesz używać tylko do console.logcelów programistycznych i console.infoinformacji, których mogą potrzebować użytkownicy końcowi. Dzięki linterowi masz teraz widoczne i bezpośrednie przypomnienie twojego tymczasowego, console.logktóre pomoże ci podczas tworzenia, ale musi zostać usunięte przed zatwierdzeniem / opublikowaniem.

Figidon
źródło
3
Nie wiem, dlaczego uznałem tę odpowiedź za bardziej odpowiednią niż wszystkie inne, miła @Figidon.
Shreyan Mehta
1
Zgadzam się. Świetne rozwiązanie do użycia z eslint w trybie deweloperskim i produkcyjnym. Nie przejdziesz przez console.log! (laska i miecz w dłoni)
Tomas Vancoillie
26

Według dokumentacji jest to całkiem jasne.

console.info ([dane], [...]) # To samo co console.log.

console.error ([dane], [...]) # To samo co console.log, ale drukuje na stderr.

console.warn ([dane], [...]) # To samo co console.error.

Oznacza to, że nie ma żadnych korzyści ani wad. info== logi warn== error. Jeśli nie chcesz drukować stderr, infoi czy logbędzie działać.

Sterling Archer
źródło
23

Wizualnie, No rzeczywiście różnica między console.log, console.info, console.warnjak również console.errorw odniesieniu do strony serwera (terminal) .

Jednakże istnieją lekkie moduły , które dodają niebieski, pomarańczowy i czerwony kolor na console.info, console.warnjak również console.errorodpowiednio. W ten sposób konsolowy interfejs API zachowuje się jak po stronie klienta.

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

wprowadź opis obrazu tutaj

Abdennour TOUMI
źródło
9

Jeszcze jeden szczegół oprócz zaakceptowanej odpowiedzi: w Chrome i FireFox console.infowiersze dziennika są poprzedzone małą ikoną i, podczas gdy console.logwiersze nie. warna errorlinie są poprzedzone odpowiednio małym trójkątem i x .

Bill Hoag
źródło
Jak zaobserwowano gdzie indziej: Firefox 78: wypisuje ⓘ (i w kółku) przed wyjściem log.info. Chrome 84: nie
Tom Hundt
3

stdin Czytelny strumień do odczytu danych wejściowych od użytkownika.

stdout Zapisywalny strumień, synchronicznie lub asynchronicznie.

stderr Blokujący synchroniczny zapisywalny strumień przeznaczony do komunikatów o błędach.

Funkcje stdout lub nieblokujące to: console.log, console.info, util.puts, util.print i Stderr.

Funkcje blokujące to: console.warn, console.error, util.debug i process.stdin (czytelny strumień do wprowadzania danych przez użytkownika).

Avinash Maurya
źródło
1

Ustalono, że dziennik i informacje to w zasadzie to samo, ale nie jestem pewien, czy w pełni odpowiada na pytanie:

Jakie są zalety korzystania z console.log w porównaniu z console.info?

Jedną z korzyści, oprócz tego, co już zostało wspomniane, jest to, że możesz użyć każdego z nich do innego celu. Na przykład, możesz użyć console.log tylko do szybkiego debugowania i wypluwania rzeczy do konsoli, podczas gdy możesz użyć console.info do trwałych komunikatów, które chcesz wyprowadzić na konsolę w swoim kodzie, takich jak informacje o bieżącym stanie aplikacji . Następnie, gdy masz sytuację, w której losowy obiekt jest drukowany w konsoli i zdasz sobie sprawę, że przypadkowo zostawiłeś tam instrukcję dziennika, możesz przeprowadzić globalne wyszukiwanie dla „console.log” i usunąć każdą instancję i mieć pewność nie usunąłeś niczego ważnego, co chciałeś tam zostawić.

dallin
źródło
0

Różne poziomy rejestrowania pozwalają zarządzać poziomem szumów w konsoli: Zarówno w Firefoksie (używam teraz 78), jak i Chrome (84) devtools, konsola js pozwala wybrać, jaki „poziom debugowania” wyniku ma być widzieć. FF pozwala przełączać widoczność console.error, .warn, .log, .info, i .debugwiadomości, klikając poszczególne przyciski każda (które pokazują, ile zostało stłumione, kiedy „off”), podczas gdy Chrome ma listę rozwijaną z ptaszkami obok elementów ( .infoi .logsą kontrolowane przez „Informacje” i .debug„Pełne”). Etykieta listy rozwijanej Chrome („Wszystkie poziomy” lub cokolwiek ustawisz) zmienia kolor na czerwony, jeśli wyjście zostało wyłączone.

Tom Hundt
źródło
0

Widziałem, gdzie console.logjest tymczasowe rejestrowanie informacji o stanie w celu debugowania.

console.info jest bardziej trwałą rzeczą - na przykład informacją, na jakim porcie coś jest uruchomione, i czymś, czego nie można wyciąć po zakończeniu debugowania.

Ułatwia to czyszczenie kodu w celu jego zatwierdzenia. Możesz nawet ustawić linter z regułą, która zapobiega zatwierdzaniu pliku console.log.

RobKohr
źródło