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



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");

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


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.


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ć.


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


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 .


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).


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ć.


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.