Node.js console.log เทียบกับ console.info


93

ประโยชน์ของการใช้console.logvs console.infoคืออะไร? หรือคำสั่งคอนโซลอื่น ๆ สำหรับเรื่องนั้นหรือไม่?

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

เทียบกับ

console.log("log");

ฉันคิดว่ามันอาจเปลี่ยนสีของผลลัพธ์หรือเชื่อมต่อป้ายกำกับบางประเภท แต่ดูเหมือนว่าทั้งหมดจะทำในสิ่งเดียวกัน และตามเอกสารที่นี่:

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

ดูเหมือนพวกเขาทั้งหมดจะทำเช่นเดียวกับ console.log


อาจซ้ำกันได้ของ: stackoverflow.com/questions/14437428/…
Craig Wayne

3
เคล็ดลับบางประการ: คุณสามารถใช้สีเพื่อให้มีมุมมองที่ดีขึ้นของ: console.log ('% c Sample Text', 'color: green;'); หรือเพิ่ม VAR ในข้อความโดยใช้: console.log (`ตัวอย่าง $ {variable}`, 'color: green;');
Gilberto

ขอบคุณฉันไม่รู้ว่ามันทำงานบนโหนด js ได้ด้วย

คำตอบ:


81

ตามเอกสารที่คุณเชื่อมโยงไปconsole.errorและเอาท์พุทจะconsole.warn stderrคนอื่น ๆ stdoutออกไป

หากคุณกำลังทำท่อหรือเปลี่ยนเส้นทางจากnode.jsความแตกต่างเป็นสิ่งสำคัญ

มี JavaScript จำนวนมากที่เขียนขึ้นเพื่อเรียกใช้ทั้งในเบราว์เซอร์และNode.js. การมีโหนดใช้คอนโซลแบบเต็มช่วยให้สามารถใช้งานร่วมกันได้ระหว่างรหัสมากขึ้น

ในเบราว์เซอร์ส่วนใหญ่ไม่เพียง แต่บันทึกด้วยสีที่แตกต่างกันเท่านั้น แต่คุณยังสามารถกรองเพื่อดูข้อความที่ต้องการได้อีกด้วย

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

ขอบคุณ! เป็นเบราว์เซอร์ที่แสดงแตกต่างกัน ฉันกำลังมองหาในเทอร์มินัลสำหรับการเปลี่ยนแปลงสี
seantomburke

2
ในnode( 8.11.4) และ Chrome 67 ยังมีconsole.debug(และมีแนวโน้มว่าจะเป็นเวอร์ชันก่อนหน้านี้ด้วย) การจัดอันดับด้านล่างdebug log
Marcus Junius Brutus

41

console.log() สั้นกว่า console.info()

เป็นสิ่งเดียวกันและนั่นเป็นข้อดีเพียงประการเดียว

ป้อนคำอธิบายภาพที่นี่


65
ฉันลงคะแนนเพราะ "นั่นเป็นข้อดีเพียงอย่างเดียว" นั้นไม่เป็นความจริงและค่อนข้างมองสั้น วิธีการที่ดีอาจได้ว่าการดำเนินการเหมือนกัน แต่พวกเขามีความแตกต่างกันความหมาย คอนโซลช่วยให้คุณสามารถใช้การกรองระดับบันทึกได้เล็กน้อยเช่น
rixo

4
console.log = stdout ในขณะที่ console.error = stderr
Craig Wayne

9
developer.mozilla.org/en-US/docs/Web/API/Console/info - "ใน Firefox และ Chrome ไอคอน" i "ขนาดเล็กจะปรากฏถัดจากรายการเหล่านี้ในบันทึกของเว็บคอนโซล" - image.ibb .co / gYrZHe / infolog.png
ed

4
@EdwardSammutAlessi ฉันใช้ Chrome และไม่สามารถสร้างขึ้นใหม่และทำให้ไอคอน i ปรากฏขึ้น
chevybow

จุดข้อมูลเดียว: Firefox 78: พิมพ์ⓘ (i ในวงกลม) ก่อนเอาต์พุต log.info Chrome 84: ไม่
Tom Hundt

34

แม้ว่าconsole.logและconsole.infoอาจไม่แตกต่างกัน แต่ก็มีประโยชน์อื่น ๆ ยกเว้นเพียงการระบายสี ตัวอย่างเช่นเมื่อใช้ linter เช่น eslint คุณสามารถตั้งค่าconsole.logให้มีข้อความเตือนได้ สมมติว่าคุณต้องการใช้console.logเพื่อวัตถุประสงค์ในการพัฒนาของคุณเท่านั้นและใช้console.infoสำหรับข้อมูลที่ผู้ใช้ปลายทางอาจต้องการ ตอนนี้คุณมีการแจ้งเตือนชั่วคราวconsole.logที่มองเห็นได้โดยตรงซึ่งช่วยคุณในระหว่างการพัฒนา แต่ต้องนำออกก่อนที่จะตกลง / เผยแพร่


3
ฉันไม่รู้ว่าทำไมฉันถึงพบว่าคำตอบนี้เหมาะสมกว่าคนอื่น ๆ ทั้งหมดที่ดี @Figidon
Shreyan Mehta

1
ฉันเห็นด้วย โซลูชันที่ยอดเยี่ยมสำหรับใช้กับ eslint สำหรับโหมด dev และ production คุณจะไม่ผ่าน console.log! (ไม้เท้าและดาบในมือ)
Tomas Vancoillie

26

ตามเอกสารมันค่อนข้างชัดเจน

console.info ([data], [... ]) # เหมือนกับ console.log

console.error ([data], [... ]) # เหมือนกับ console.log แต่พิมพ์ไปที่ stderr

console.warn ([data], [... ]) # เหมือนกับ console.error

ซึ่งหมายความว่าไม่มีประโยชน์หรือข้อเสีย info== logและ==warn errorถ้าคุณต้องการพิมพ์ไปstderr, infoหรือlogจะทำงาน


23

สายตาไม่แตกต่างกันจริงในหมู่console.log, console.info, console.warnเช่นเดียวกับconsole.errorเกี่ยวกับด้านเซิร์ฟเวอร์ (Terminal)

แต่มีโมดูลที่มีน้ำหนักเบาที่เพิ่มสีฟ้า, สีส้มและสีแดง สำหรับconsole.info, console.warnเช่นเดียวกับconsole.errorตามลำดับ จากนั้นคอนโซล API จะทำงานเหมือนฝั่งไคลเอ็นต์

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

ป้อนคำอธิบายภาพที่นี่


9

อีกหนึ่งรายละเอียดนอกเหนือจากคำตอบที่ยอมรับ: ใน Chrome และ FireFox console.infoบรรทัดบันทึกจะขึ้นต้นด้วยไอคอนiเล็ก ๆในขณะที่ไม่มีconsole.logเส้น warnและerrorเส้นจะขึ้นต้นด้วยสามเหลี่ยมเล็กน้อยและxตามลำดับ


ตามที่พบในที่อื่น: Firefox 78: พิมพ์ⓘ (i ในวงกลม) ก่อนเอาต์พุต log.info Chrome 84: ไม่
Tom Hundt

3

stdin สตรีมที่อ่านได้สำหรับการอ่านอินพุตจากผู้ใช้

stdout สตรีมที่เขียนได้ทั้งแบบซิงโครนัสหรืออะซิงโครนัส

stderr บล็อกสตรีมที่เขียนได้แบบซิงโครนัสสำหรับข้อความแสดงข้อผิดพลาด

ฟังก์ชัน stdout หรือnon-blockได้แก่ : console.log, console.info, util.puts, util.print และ Stderr

ฟังก์ชันการบล็อกได้แก่ console.warn, console.error, util.debug และ process.stdin (สตรีมที่อ่านได้สำหรับการรับอินพุตของผู้ใช้)


1

ได้รับการยอมรับว่าบันทึกและข้อมูลเป็นสิ่งเดียวกัน แต่ฉันไม่แน่ใจว่าจะตอบคำถามทั้งหมด:

ประโยชน์ของการใช้ console.log vs console.info คืออะไร?

ประโยชน์อย่างหนึ่งนอกเหนือจากที่ได้กล่าวไปแล้วคือคุณสามารถใช้แต่ละอย่างเพื่อวัตถุประสงค์ที่แตกต่างกัน ตัวอย่างเช่นคุณอาจใช้ console.log เพื่อแก้จุดบกพร่องอย่างรวดเร็วและพ่นสิ่งต่างๆไปยังคอนโซลในขณะที่คุณอาจใช้ console.info สำหรับข้อความถาวรที่คุณต้องการส่งออกไปยังคอนโซลในโค้ดของคุณเช่นข้อมูลเกี่ยวกับสถานะแอปปัจจุบัน . จากนั้นเมื่อคุณมีสถานการณ์ที่พิมพ์วัตถุแบบสุ่มในคอนโซลของคุณและคุณรู้ว่าคุณได้ทิ้งข้อความบันทึกไว้ที่นั่นโดยบังเอิญคุณสามารถค้นหา 'console.log' ทั่วโลกและลบทุกอินสแตนซ์ได้อย่างมั่นใจ คุณไม่ได้ลบอะไรสำคัญที่คุณตั้งใจจะทิ้งไว้ที่นั่น


0

ระดับการบันทึกที่แตกต่างกันช่วยให้คุณจัดการระดับเสียงรบกวนในคอนโซลของคุณ: ทั้งใน Firefox (ตอนนี้ฉันใช้ 78) และ Chrome (84) devtools คอนโซล js ช่วยให้คุณสามารถเลือก "ระดับดีบัก" ของเอาต์พุตที่คุณต้องการ ดู. FF ช่วยให้คุณสามารถสลับการแสดงผลของconsole.error, .warn, .log, .infoและ.debugข้อความโดยการคลิกที่ปุ่มสำหรับแต่ละบุคคล (นั่นแสดงให้เห็นว่าหลายคนถูกปราบปรามเมื่อ "ปิด") ในขณะที่ Chrome มีแบบเลื่อนลงด้วยเครื่องหมายถัดจากรายการที่ ( .infoและ.logถูกควบคุมโดย "ข้อมูล" หนึ่งรายการและ.debugตาม "Verbose") ป้ายกำกับแบบเลื่อนลงของ Chrome ("ทุกระดับ" หรืออะไรก็ตามที่คุณตั้งค่าไว้) จะเปลี่ยนเป็นสีแดงหากเอาต์พุตถูกระงับ


0

ฉันเห็นว่าconsole.logมีไว้สำหรับการบันทึกข้อมูลสถานะชั่วคราวสำหรับการดีบัก

console.info เป็นสิ่งที่ถาวรกว่าเช่นการบอกว่าพอร์ตอะไรกำลังทำงานอยู่และบางสิ่งที่คุณจะไม่ตัดออกหลังจากที่คุณแก้ไขจุดบกพร่องเสร็จแล้ว

วิธีนี้ทำให้ง่ายต่อการทำความสะอาดรหัสของคุณสำหรับการกระทำ คุณยังสามารถกำหนดให้ linter มีกฎเพื่อป้องกันไม่ให้ console.log ถูกคอมมิต

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.