Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Ruby

วิธีใช้บันทึกใน Ruby เพื่อติดตามเหตุการณ์และข้อความแสดงข้อผิดพลาด

การบันทึกเป็นกระบวนการบันทึกข้อมูลว่าแอปพลิเคชัน Ruby ของคุณกำลังทำอะไรอยู่

มีประโยชน์มากทั้งในสภาพแวดล้อมการพัฒนาและการผลิต

ทำไม?

เนื่องจากการบันทึกทั้งหมดคือการรวบรวมข้อมูลเกี่ยวกับสิ่งที่เกิดขึ้น อะไรผิดพลาด และอะไรถูกต้อง

ข้อมูลทุกประเภทสามารถบันทึกได้ :

  • การสืบค้น SQL ช้า (เพื่อให้คุณสามารถค้นหาและแก้ไขได้)
  • ข้อความแสดงข้อผิดพลาด
  • ข้อมูลคำขอโดยละเอียด (URL, Controller, Params, Views…)

ด้วยข้อมูลนี้ คุณจะวินิจฉัยและค้นหาสาเหตุของปัญหาในแอปพลิเคชันของคุณได้เร็วขึ้น

ในแอป Rails บันทึกจะถูกเก็บไว้ภายใต้ /log โฟลเดอร์

ในโหมดการพัฒนา development.log ไฟล์ถูกใช้แล้ว &คุณเห็นเอาต์พุตบันทึกบนเทอร์มินัลที่คุณกำลังเรียกใช้ rails server บน.

ตอนนี้ :

มาเรียนรู้วิธีการเข้าสู่ระบบ Ruby โดยใช้ Logger คลาส!

คลาสคนตัดไม้

คลาส Ruby Logger มีวิธีสร้างบันทึกที่มีรูปแบบเอาต์พุตเริ่มต้นและระดับความรุนแรงที่แตกต่างกัน

นี่คือวิธีสร้างบันทึก :

logger = Logger.new("my_log.txt")

การดำเนินการนี้จะเขียนข้อความบันทึกไปยัง my_log.txt .

หากคุณต้องการแสดงข้อความบนเทอร์มินัลที่โปรแกรมกำลังทำงานอยู่ คุณสามารถเข้าสู่ระบบ STDOUT .

ถูกใจสิ่งนี้ :

logger = Logger.new(STDOUT)

ข้อความบันทึกอาจมีระดับที่แตกต่างกัน ขึ้นอยู่กับระดับความสำคัญ

ระดับคือ :

  • ดีบัก
  • ข้อมูล
  • คำเตือน
  • ข้อผิดพลาด
  • FATAL
  • ไม่รู้จัก

ทุกระดับมีวิธีอินสแตนซ์ที่สอดคล้องกัน

ดังนั้นหากคุณต้องการเข้าสู่ระบบ “ข้อมูล”

ทำเช่นนี้ :

logger.info("I'm reading a RubyGuide about logging!")

นี่คือลักษณะของรายการบันทึกจริง :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : I'm reading a RubyGuide about logging!

การมีระดับต่างๆ เหล่านี้จะช่วยให้คุณกรองไฟล์บันทึกได้ คุณจึงค้นหาสิ่งที่ต้องการได้เร็วขึ้น!

นอกจากนี้ยังช่วยให้คุณเห็นจำนวนข้อผิดพลาดและเตือนข้อความที่คุณสร้างเมื่อเวลาผ่านไป

ดีมาก!

วิธีการจัดรูปแบบบันทึกของคุณ

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

นี่คือบรรทัดบันทึกอีกครั้ง :

# I, [2019-08-08T19:22:00.152079 #642]  INFO -- : test

มีองค์ประกอบบางอย่าง :

  • ตัว “I” แทนอักษรตัวแรกของระดับความรุนแรง
  • ในวงเล็บ คุณจะพบการประทับเวลาและรหัสกระบวนการ (PID) ของกระบวนการที่สร้างข้อความบันทึกนี้
  • INFO คือชื่อเต็มของระดับความรุนแรง
  • หลังโคลอน เรามีข้อความจริงที่บันทึกไว้

แต่รูปแบบนี้อาจไม่เหมาะสำหรับทุกคน

Ruby ให้คุณเปลี่ยนได้!

ตามนี้ :

logger.formatter = proc { |severity, datetime, progname, msg| "#{severity}, #{datetime}, #{msg}\n" }

ผลลัพธ์ที่ได้คือผลลัพธ์นี้ :

DEBUG, 2019-08-08 19:39:01 +0200, testing

คุณสามารถใช้ข้อมูลนี้เพื่อเพิ่มข้อมูลเพิ่มเติมที่อาจเป็นประโยชน์สำหรับคุณและทีมของคุณ

วิธีจำกัดขนาดบันทึกของคุณ

บันทึกสามารถกลายเป็นไฟล์ขนาดใหญ่ได้เว้นแต่คุณจะติดตามขนาดของมัน

หากคุณใช้พื้นที่ดิสก์ไม่เพียงพอเนื่องจากบันทึก สิ่งแปลกประหลาดต่างๆ ก็เริ่มเกิดขึ้นในระบบของคุณ

มีวิธีแก้ไข!

คุณสามารถจำกัดขนาดของบันทึกได้

ตามนี้ :

MEGABYTE = 1024 ** 2
ONE_HUNDRED_MEGABYTES = MEGABYTE * 100

logger = Logger.new("my_log.txt", 1, ONE_HUNDRED_MEGABYTES)

พารามิเตอร์ที่ 1 คือตำแหน่งที่จะบันทึกข้อความบันทึก

พารามิเตอร์ที่ 2 คือจำนวนไฟล์บันทึกที่คุณต้องการเก็บไว้ (การหมุนบันทึก) และพารามิเตอร์สุดท้ายคือขนาดไฟล์สูงสุด

บันทึกการอ่านและการกรอง

โอเค คุณได้บันทึกของคุณแล้ว

คุณอ่านและค้นหาสิ่งที่คุณต้องการได้อย่างไร

บันทึกเป็นไฟล์ข้อความธรรมดา คุณจึงใช้เครื่องมือประมวลผลข้อความที่ต้องการได้

ตัวอย่างเช่น :

เกรป.

เป็นเครื่องมือบรรทัดคำสั่งที่คุณใช้กรองไฟล์ข้อความได้

ตามนี้ :

grep INFO my_log.txt

ซึ่งจะให้ทุกบรรทัดที่บันทึกเป็น “INFO”

คุณสามารถค้นหา ข้อความอื่นๆ ภายในบันทึกของคุณโดยใช้ grep เพียงแทนที่ “INFO” ด้วยสิ่งที่คุณกำลังมองหา

เครื่องมือ Unix อื่นที่คุณสามารถใช้ได้เรียกว่า less (พร้อมตัวเลือก -R)

ช่วยให้คุณเลื่อนดูบันทึกโดยใช้แป้นพิมพ์เท่านั้น และมีฟังก์ชันการค้นหา .

คุณยังสามารถใช้…

เครื่องมือเฉพาะสำหรับการจัดการและค้นหาบันทึก

ชอบอัญมณีล็อกสเตอร์ของ Discourse

สรุป

คุณได้เรียนรู้เกี่ยวกับการเข้าสู่ระบบ Ruby แล้ว มันคืออะไร ทำงานอย่างไร และใช้งานอย่างไร

ตอนนี้ถึงตาคุณแล้วที่จะลองทำสิ่งนี้

ขอบคุณสำหรับการอ่าน!