Node.js console.log vs console.info

92

Apa keuntungan menggunakan console.logvs console.info? Atau salah satu perintah konsol lain dalam hal ini?

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

vs.

console.log("log");

Saya pikir itu mungkin mengubah warna output atau menggabungkan semacam label, tetapi semuanya tampaknya melakukan hal yang sama. Dan menurut dokumentasi di sini:

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

mereka tampaknya melakukan hal yang sama console.log

seantomburke
sumber
Kemungkinan duplikat dari: stackoverflow.com/questions/14437428/…
Craig Wayne
3
Beberapa tip: Anda dapat menggunakan warna untuk mendapatkan tampilan yang lebih baik tentang: console.log ('% c Contoh Teks', 'color: green;'); Atau tambahkan beberapa VAR dalam teks menggunakan: console.log (`Sample $ {variable}`, 'color: green;');
Gilberto B. Terra Jr.
Terima kasih, saya tidak tahu itu juga berfungsi pada node js

Jawaban:

81

Menurut dokumentasi yang Anda tautkan, console.errordan console.warnkeluarannya stderr. Output lainnya ke stdout.

Jika Anda melakukan pemipaan atau pengalihan dari node.jsperbedaan itu penting.

Ada banyak JavaScript yang ditulis untuk dijalankan di browser dan Node.js. Memiliki node yang mengimplementasikan konsol lengkap memungkinkan kompatibilitas silang kode yang lebih besar.

Di sebagian besar browser, log ini tidak hanya dalam berbagai warna, tetapi Anda juga dapat memfilter untuk melihat pesan tertentu.

console.info("info");
console.error("error");
console.warn("warn");
console.log("log");
Jeremy J Starcher
sumber
Terima kasih! Itu adalah browser yang muncul secara berbeda. Saya sedang mencari di terminal untuk perubahan warna.
seantomburke
2
Di node( 8.11.4) dan Chrome 67, ada juga console.debug(dan kemungkinan versi sebelumnya juga). debugperingkat di bawah log.
Marcus Junius Brutus
41

console.log() lebih pendek dari console.info()

Mereka adalah hal yang sama, dan itulah satu-satunya keuntungan.

masukkan deskripsi gambar di sini

Max
sumber
65
Saya tidak setuju karena "itulah satu-satunya keuntungan" sama sekali tidak benar dan berpandangan sempit. Metode tersebut mungkin memiliki implementasi yang persis sama, tetapi memiliki arti yang berbeda . konsol memungkinkan Anda menerapkan pemfilteran tingkat log secara sepele misalnya.
rixo
4
console.log = stdout, sementara console.error = stderr
Craig Wayne
9
developer.mozilla.org/en-US/docs/Web/API/Console/info - "Di Firefox dan Chrome, ikon" i "kecil ditampilkan di sebelah item ini di log Konsol Web" - image.ibb .co / gYrZHe / infolog.png
ed '
4
@EdwardSammutAlessi Saya menggunakan Chrome dan tidak dapat membuat ulang dan menampilkan ikon i
chevybow
Satu titik data: Firefox 78: mencetak ⓘ (i dalam lingkaran) sebelum keluaran log.info. Chrome 84: tidak.
Tom Hundt
34

Meskipun console.logdan console.infomungkin tidak berbeda, ada kegunaan lain selain pewarnaan belaka. Misalnya, saat menggunakan linter seperti eslint, Anda dapat menyetel console.loguntuk memberikan pesan peringatan. Katakanlah Anda hanya ingin menggunakan console.loguntuk tujuan pengembangan Anda dan menggunakan console.infoinformasi yang mungkin dibutuhkan oleh pengguna akhir. Dengan linter, Anda sekarang memiliki pengingat yang terlihat dan langsung sementara console.logyang membantu Anda selama pengembangan, tetapi harus dihapus sebelum melakukan / menerbitkan.

Figidon
sumber
3
Saya tidak tahu mengapa saya menemukan jawaban ini lebih tepat daripada yang lain, bagus @Figidon.
Shreyan Mehta
1
Saya setuju. Solusi hebat untuk digunakan dengan eslint untuk mode pengembang dan produksi. Anda tidak boleh melewati console.log! (tongkat dan pedang di tangan)
Tomas Vancoillie
26

Menurut dokumen itu cukup jelas.

console.info ([data], [...]) # Sama seperti console.log.

console.error ([data], [...]) # Sama seperti console.log tetapi mencetak ke stderr.

console.warn ([data], [...]) # Sama seperti console.error.

Artinya tidak ada keuntungan atau kerugiannya. info== log, dan warn== error. Kecuali Anda ingin mencetak ke stderr, infodan atau logakan bekerja.

Sterling Archer
sumber
23

Secara visual, ada perbedaan sebenarnya antara console.log, console.info, console.warn, serta console.errormengenai sisi server (terminal) .

Namun, ada modul ringan yang menambah biru, oranye dan warna merah untuk console.info, console.warn, serta console.errormasing-masing. Oleh karena itu, API konsol berperilaku seperti sisi klien.

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

masukkan deskripsi gambar di sini

Abdennour TOUMI
sumber
9

Satu detail lagi selain jawaban yang diterima: Di Chrome dan FireFox, console.infobaris log diawali dengan ikon i kecil sedangkan console.logbaris tidak. warndan errorgaris diawali dengan segitiga kecil dan x , masing-masing.

Bill Hoag
sumber
Seperti yang diamati di tempat lain: Firefox 78: mencetak ⓘ (i dalam lingkaran) sebelum keluaran log.info. Chrome 84: tidak
Tom Hundt
3

stdin Aliran yang dapat dibaca untuk membaca masukan dari pengguna.

stdout Aliran yang dapat ditulis, baik secara sinkron maupun asinkron.

stderr Aliran dapat ditulis sinkron yang memblokir yang ditujukan untuk pesan kesalahan.

Fungsi stdout atau non-pemblokiran adalah: console.log, console.info, util.puts, util.print, dan Stderr.

Fungsi pemblokiran adalah: console.warn, console.error, util.debug dan process.stdin (aliran yang dapat dibaca untuk mendapatkan masukan pengguna).

Avinash Maurya
sumber
1

Telah ditetapkan bahwa log dan info pada dasarnya adalah hal yang sama, tetapi saya tidak yakin itu sepenuhnya menjawab pertanyaan:

Apa keuntungan menggunakan console.log vs console.info?

Satu manfaat, selain dari yang telah disebutkan, adalah Anda dapat menggunakan masing-masing untuk tujuan yang berbeda. Misalnya, Anda mungkin menggunakan console.log hanya untuk debugging cepat dan mengeluarkan semuanya ke konsol, sementara Anda mungkin menggunakan console.info untuk pesan permanen yang ingin Anda keluarkan ke konsol dalam kode Anda, seperti informasi tentang status aplikasi saat ini . Kemudian ketika Anda memiliki situasi di mana objek acak dicetak di konsol Anda dan Anda menyadari bahwa Anda telah meninggalkan pernyataan log di sana secara tidak sengaja, Anda dapat melakukan pencarian global untuk 'console.log' dan menghapus setiap contoh dan yakinlah Anda tidak menghapus sesuatu yang penting yang ingin Anda tinggalkan di sana.

dallin
sumber
0

Tingkat pencatatan yang berbeda memungkinkan Anda mengelola tingkat kebisingan di konsol Anda: Di Firefox (saya menggunakan 78 saat ini) dan Chrome (84) devtools, konsol js memungkinkan Anda memilih "tingkat debug" dari keluaran yang Anda inginkan Lihat. FF memungkinkan Anda mengaktifkan visibilitas console.error, .warn, .log, .info, dan .debugpesan dengan mengklik tombol individu untuk setiap (yang menunjukkan berapa banyak ditekan, ketika "off"), sedangkan Chrome memiliki dropdown dengan checkmarks sebelah item ( .infodan .logdikendalikan oleh yang "Info", dan .debugoleh "Verbose"). Label tarik-turun Chrome ("Semua tingkat" atau apa pun yang Anda setel) berubah menjadi merah jika keluaran disembunyikan.

Tom Hundt
sumber
0

Saya telah melihat di mana console.loguntuk sementara pencatatan informasi negara untuk debugging.

console.info adalah hal yang lebih permanen - seperti mengatakan port apa yang sedang berjalan, dan sesuatu yang tidak akan Anda hentikan setelah Anda selesai debugging.

Ini membuatnya mudah untuk membersihkan kode Anda untuk melakukannya. Anda bahkan dapat meminta linter Anda memiliki aturan untuk mencegah console.log dilakukan.

RobKohr
sumber