Ruby:
การบันทึกล็อก

วิธีการ:

Ruby มาพร้อมกับโมดูลสำหรับการบันทึกคือ Logger, ที่ใช้งานได้ง่ายมาก นี่คือตัวอย่างเพื่อให้คุณเริ่มต้น:

require 'logger'

# สร้าง Logger ที่แสดงผลออกมาที่ STDOUT
logger = Logger.new(STDOUT)
logger.level = Logger::INFO

# ข้อความ log ตัวอย่าง
logger.info("นี่คือข้อความข้อมูล")
logger.warn("นี่คือข้อความเตือน")
logger.error("นี่คือข้อความข้อผิดพลาด")

การรันสคริปต์ด้านบนจะแสดงผลลัพธ์ดังนี้:

I, [2023-03-15T10:00:00.123456 #1234]  INFO -- : นี่คือข้อความข้อมูล
W, [2023-03-15T10:00:01.234567 #1234]  WARN -- : นี่คือข้อความเตือน
E, [2023-03-15T10:00:02.345678 #1234] ERROR -- : นี่คือข้อความข้อผิดพลาด

คุณสามารถกำหนดค่ารูปแบบและระดับ log เพื่อกรองเสียงรบกวนที่ไม่จำเป็น, และคุณสามารถส่ง log ไปยังการแสดงผลที่ต่างกัน, เช่น ไฟล์หรือแม้แต่บริการการบันทึกภายนอก

การศึกษาลึก

การบันทึกคือเหมือนกับประเพณีที่มีมายาวนานในโลกโปรแกรมมิ่ง โดยประวัติศาสตร์, บันทึกเป็นเพียงแค่ไฟล์ข้อความธรรมดา, ที่ถูกแยกวิเคราะห์โดยมือด้วยเครื่องมือเช่น grep แต่ความคิดนี้ได้ขยายออกไปเป็นระบบนิเวศที่ครบถ้วนของเฟรมเวิร์กการบันทึกและบริการที่เข้มแข็งเช่น Log4j, Syslog บน Linux, หรือ Sematext และ Loggly ในยุคคลาวด์

Logger ของ Ruby เป็นวิธีที่ง่ายดายในการเริ่มต้น, แต่ถ้าคุณต้องการกำลังไฟและความยืดหยุ่นมากขึ้น, คุณอาจต้องตรวจสอบทางเลือกเช่น Lograge หรือ Semantic Logger เหล่านี้เป็นไลบรารีที่ใช้งานได้ดีกับแอปพลิเคชัน Ruby, โดยเสนอการควบคุมที่ละเอียดยิ่งขึ้นเกี่ยวกับการจัดรูปแบบ log, รวมถึงแบบจำลองบันทึกที่มีโครงสร้าง (รูปแบบ JSON), ประสิทธิภาพที่ดีขึ้น, และการรวมเข้ากับบริการอื่นๆ ได้อย่างราบรื่น

แต่ละไลบรารีการบันทึกของ Ruby มีวิธีการทำงานของตัวเอง, แต่ภายใต้พื้นฐาน, พวกเขาทั้งหมดหมุนวนรอบความคิดของอินสแตนซ์ logger ที่คุณส่งข้อความไปยัง ลอกเกอร์จัดการข้อความเหล่านี้ตามระดับที่ตั้งไว้—DEBUG, INFO, WARN, ERROR, FATAL, และ UNKNOWN—และตัดสินใจว่าจะทำอะไรกับพวกเขา: พิมพ์พวกเขาออกมา, บันทึกไว้ในไฟล์, ส่งพวกเขาผ่านเครือข่าย, ฯลฯ

ดูเพิ่มเติม

สำหรับการศึกษาลึกเกี่ยวกับโมดูลการบันทึกที่มีอยู่ในตัวของ Ruby, ตรวจสอบเอกสารทางการ:

หากคุณสนใจการบันทึกที่ก้าวหน้ามากขึ้นหรือต้องการสำรวจเจมส์ของบุคคลที่สาม:

สำหรับปฏิบัติการบันทึกทั่วไปและปรัชญา (ไม่เฉพาะเจาะจงเป็น Ruby), บทความเหล่านี้เป็นการอ่านที่ไม่ล้าสมัย: