Jaka jest korzyść z używania console.log
vs 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
javascript
node.js
terminal
console
seantomburke
źródło
źródło
Odpowiedzi:
Zgodnie z dokumentacją, z którą utworzyłeś link
console.error
iconsole.warn
do której wyprowadziłeśstderr
. Inni wychodzą dostdout
.Jeśli robisz orurowanie lub przekierowanie z
node.js
róż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");
źródło
node
(8.11.4
) i Chrome 67 jest równieżconsole.debug
(i prawdopodobnie również wcześniejsze wersje).debug
rangi poniżejlog
.console.log()
jest krótszy niżconsole.info()
Są tym samym i to jedyna zaleta.
źródło
Chociaż
console.log
iconsole.info
mogą 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.log
wyświetlanie komunikatu ostrzegawczego. Załóżmy, że chcesz używać tylko doconsole.log
celów programistycznych iconsole.info
informacji, których mogą potrzebować użytkownicy końcowi. Dzięki linterowi masz teraz widoczne i bezpośrednie przypomnienie twojego tymczasowego,console.log
które pomoże ci podczas tworzenia, ale musi zostać usunięte przed zatwierdzeniem / opublikowaniem.źródło
Według dokumentacji jest to całkiem jasne.
Oznacza to, że nie ma żadnych korzyści ani wad.
info
==log
iwarn
==error
. Jeśli nie chcesz drukowaćstderr
,info
i czylog
będzie działać.źródło
Wizualnie, No rzeczywiście różnica między
console.log
,console.info
,console.warn
jak równieżconsole.error
w odniesieniu do strony serwera (terminal) .Jednakże istnieją lekkie moduły , które dodają niebieski, pomarańczowy i czerwony kolor na
console.info
,console.warn
jak równieżconsole.error
odpowiednio. W ten sposób konsolowy interfejs API zachowuje się jak po stronie klienta.npm i console-info console-warn console-error --save-dev;
źródło
Jeszcze jeden szczegół oprócz zaakceptowanej odpowiedzi: w Chrome i FireFox
console.info
wiersze dziennika są poprzedzone małą ikoną i, podczas gdyconsole.log
wiersze nie.warn
aerror
linie są poprzedzone odpowiednio małym trójkątem i x .źródło
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).
źródło
Ustalono, że dziennik i informacje to w zasadzie to samo, ale nie jestem pewien, czy w pełni odpowiada na pytanie:
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ć.
źródło
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.debug
wiadomoś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 (.info
i.log
są 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.źródło
Widziałem, gdzie
console.log
jest 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.
źródło