การบันทึกเป็นกระบวนการบันทึกข้อมูลว่าแอปพลิเคชัน 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 แล้ว มันคืออะไร ทำงานอย่างไร และใช้งานอย่างไร
ตอนนี้ถึงตาคุณแล้วที่จะลองทำสิ่งนี้
ขอบคุณสำหรับการอ่าน!