สำรองข้อมูลด้วยการ Logging File
Logging คือการเก็บข้อมูลที่ต้องการไว้สำหรับอ้างอิง หรือสำรองไว้ ซึ่งข้อมูลที่จะเก็บนั้นมักจะเป็นข้อความอธิบายการทำงานของระบบสั้นๆได้ใจความ อย่างเช่น IP หมายเลข xxx เข้ามาใช้บริการหน้าเว็บวันที่ xxx, ลูกค้าหมายเลข xxx จ่ายเงินเสร็จเรียบร้อยวันที่ yyy, เกิดปัญหากับระบบวันที่ xxx ในส่วน zzz เป็นต้น การ logging นั้นสามารถเก็บข้อมูลในรูป text file หรือเก็บข้อมูลลงฐานข้อมูลก็ได้ แต่ผมแนะนำให้เก็บข้อมูลในรูป text file ดีกว่า เหตุผลเพราะถ้าเราเก็บข้อมูลลงฐานข้อมูล เกิดว่าฐานข้อมูลที่ใช้อยู่มีปัญหาจะทำให้ ทั้งข้อมูลที่จะต้องเก็บลงฐานข้อมูลและข้อมูลที่เราจะ logging file เสียหายทั้งหมดทำให้เราไม่ทราบว่าข้อมูลที่เราจะเก็บนั้นเป็นอย่างไร
ลองคิดเล่นๆ เราได้ทำการสร้างเว็บแอพริแคชั่น สำหรับสั่งซื้อของบนเว็บ
- ลูกค้าทำการสั่งซื้อของ และกดยืนยัน
- ระบบจะเริ่มทำรายการส่งข้อมูลไปค้นหาและตัดเงินกับทางบัญชีธนาคารของลูกค้า
- เก็บข้อมูลที่ได้ลงฐานข้อมูล
- แสดงผลลัพธ์ว่าได้รับเงินแล้วไปยังหน้าเว็บที่ลูกค้าเปิดอยู่
- ระบบส่งสินค้าไปให้ลูกค้า ระบบ happy ได้เงิน ลูกค้า happy ได้สินค้าที่ต้องการ ต่อไปก็จะกลับมาซื้อของที่ระบบอีก
เสร็จสิ้นกระบวนการ …ดูเหมือนว่าไม่จำเป็นต้องเก็บ logging file ใช่ไหม ?
ถ้าคิดงั้นมาดูตัวอย่างปัญหากัน จากตัวอย่างแรก
- ลูกค้าทำการสั่งซื้อของ และกดยืนยัน
- ระบบจะเริ่มทำรายการส่งข้อมูลไปค้นหาและตัดเงินกับทางบัญชีธนาคารของลูกค้า
- เก็บข้อมูลที่ได้ลงฐานข้อมูล แต่เกิดปัญหาไม่สามารถใส่ข้อมูลลงฐานข้อมูลได้
- แสดงผลลัพธ์ผิดพลาดไปยังหน้าเว็บที่ลูกค้าเปิดอยู่
- ลูกค้าโทรให้ระบบตรวจสอบ เพราะจ่ายเงินไปแล้วแต่ระบบแสดงผลบอกว่ายังไม่ได้รับเงิน
- ระบบทำการตรวจสอบกับฐานข้อมูล แต่ไม่พบการทำรายการนั้น ระบบจึงตอบยืนยันไปว่าลูกค้ายังไม่ได้จ่ายเงิน
- ลูกค้าไม่ happy อาจไปฟ้องร้อง แล้วไม่กลับมาซื้อสินค้าที่ระบบอีก นอกจากนั้นยังบอกต่อไปยังคนรู้จัก ว่าเว็บนี้ซื้อของจ่ายเงินแล้วไม่ได้รับสินค้า ระบบเสียลูกค้าไปและชื่อเสียงของเว็บไม่น่าเชื่อถือ
แล้วเราจะแก้ปัญหาดังกล่าวได้อย่างไร ลองมาดูปัญหาแรกกันอีกที…
- ลูกค้าทำการสั่งซื้อของ และกดยืนยัน
- ระบบจะเริ่มทำรายการส่งข้อมูลไปค้นหาและตัดเงินกับทางบัญชีธนาคารของลูกค้า
- ทำการเก็บข้อมูลที่ได้ลง logging file
- เก็บข้อมูลที่ได้ลงฐานข้อมูล แต่เกิดปัญหาไม่สามารถใส่ข้อมูลลงฐานข้อมูลได้
- ทำการเก็บข้อมูลปัญหาที่พบลง logging file
- แสดงผลลัพธ์ผิดพลาดไปยังหน้าเว็บที่ลูกค้าเปิดอยู่
- ลูกค้าโทรให้ระบบตรวจสอบ เพราะจ่ายเงินไปแล้วแต่ระบบแสดงผลบอกว่ายังไม่ได้รับเงิน
- ระบบทำการตรวจสอบกับฐานข้อมูล แต่ไม่พบการทำรายการนั้น จึงทำการตรวจสอบจาก logging file แล้วพบว่าการจ่ายเงินเสร็จสินแล้ว แต่เกิดปัญหาตอนเก็บข้อมูลลงฐานข้อมูล
- แก้ไขปัญหาที่เกิดกับระบบ และโทรบอกลูกค้าว่าจ่ายเงินเสร็จเรียบร้อยแล้ว จากนั้นส่งสินค้าไปให้ลูกค้า
- ลูกค้า happy ได้รับของและกลับมาซื้อของที่ระบบอีก ระบบ happy ยังคงรักษาชื่อเสียงและลูกค้าไว้ได้ แถมยังรู้ปัญหาที่เกิดกับระบบเพื่อการแก้ไขอีกด้วย
จะเห็นได้ว่าการ Logging file นั้นมีประโยชน์มากมายจริงๆ จากประสบการณ์การทำงานของผมก็ได้เจ้า logging file นี่ละช่วยชีวิตไว้หลายๆครั้ง ในการตรวจสอบปัญหากับระบบ ต่อไปผมจะสาธิตทดลองสร้างเจ้า logging file อย่างง่ายๆให้ชมกัน ซึ่ง tool แต่ละตัวที่ผมจะใช้สร้าง logging file นี้ผมลองทดสอบแล้วพบว่าประสิทธิภาพการทำงานของ tool แต่ละตัวทำได้อย่างดีเยี่ยมครับ
- การสร้าง logging file สำหรับ Java ด้วย Log4j
- การสร้าง logging file สำหรับ .Net ด้วย Enterprise Architect tool
- การสร้าง logging file สำหรับ PHP ด้วย Log4php