การบันทึกและตรวจสอบเป็นสองเสาหลักของความเสถียรของแอปพลิเคชันมือถือ ตามข้อมูลของ Gartner (2025) ตลาดโซลูชัน APM จะถึง 8 พันล้านดอลลาร์ภายในปี 2027 การบันทึกที่ถูกต้อง ไม่เพียงช่วยค้นหาข้อบกพร่อง แต่ยังช่วยทำนายปัญหาก่อนที่จะส่งผลกระทบต่อผู้ใช้
ประเด็นสำคัญ
การบันทึกแอปพลิเคชันมือถือ บน iOS สร้างขึ้นบน os_log — ระบบในตัวของ Apple ที่พร้อมใช้งานตั้งแต่ iOS 10 os_log เขียนบันทึกลงในบันทึกระบบเดียว (บนอุปกรณ์หรือผ่าน Console.app) รองรับหมวดหมู่ ระดับ และแท็กความเป็นส่วนตัว การรวมกันของการบันทึกและตรวจสอบบน iOS ผ่าน Console.app และ xcrun ช่วยติดตามข้อผิดพลาดและประสิทธิภาพแบบเรียลไทม์
os_log มีระดับ: Default, Info, Debug, Error, Fault ในการผลิตจะเก็บ Error และ Fault — Debug และ Info จะถูกปิดใช้งาน การเลือกระดับที่ถูกต้องเป็นส่วนหนึ่งของกลยุทธ์ การตรวจสอบแอปพลิเคชันมือถือ บน iOS ความเป็นส่วนตัว: %{public}@ สำหรับข้อมูลที่ไม่มีการป้องกัน %{private}@ สำหรับข้อมูลส่วนบุคคล
CocoaLumberjack เป็นไลบรารียอดนิยมสำหรับการบันทึกบน iOS ต่างจาก os_log ตรงที่รองรับรูปแบบที่กำหนดเอง การเขียนแบบอะซิงโครนัส และการหมุนเวียนบันทึก DDLog, DDTTYLogger (คอนโซล), DDFileLogger (ไฟล์ที่มีการหมุนเวียน) สำหรับการตรวจสอบระยะไกล สามารถรวม CocoaLumberjack กับ os_log — เขียนลงไฟล์สำหรับการบันทึกระยะไกลและเขียนลง os_log สำหรับ Console.app
สำหรับ การบันทึกแอปพลิเคชันมือถือ บน Android ใช้ Timber — ไลบรารีโดย Jake Wharton ที่กลายเป็นมาตรฐานของแพลตฟอร์ม Timber เป็นตัวหุ้มเหนือ Android Log (Logcat) ที่เพิ่มแท็กคลาสโดยอัตโนมัติและกำหนดค่า Tree Timber เป็นส่วนหนึ่งของระบบตรวจสอบแอปพลิเคชันมือถือ Android: DebugTree สำหรับการดีบัก, CrashlyticsTree สำหรับการส่งข้อมูล
Timber ใช้ Tree — คอมโพเนนต์ที่ตัดสินใจว่าจะทำอย่างไรกับบันทึก ในบิลด์ดีบัก ใช้ DebugTree (ส่งออกไปยัง Logcat) ในรุ่นรีลีส — CrashlyticsTree (ส่งความขัดข้อง) Timber.wtf() บันทึกข้อผิดพลาดร้ายแรง Timber.tag("CustomTag") กำหนดแท็กใหม่ เพื่อการตรวจสอบที่มีประสิทธิภาพ Timber จะถูกรวมกับเครื่องมือ APM
Android Log มีระดับ: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT ProGuard/R8 ลบ Log.d และ Log.v ในรุ่นรีลีส — Timber อนุญาตให้บันทึกผ่าน Plant การเลือกระดับส่งผลต่อคุณภาพของการตรวจสอบแอปพลิเคชันมือถือ — ในการผลิตจะเก็บ WARN และ ERROR
| เครื่องมือ | แพลตฟอร์ม | รูปแบบ | การหมุนเวียน | ระยะไกล | ความซับซ้อน |
|---|---|---|---|---|---|
| os_log | iOS | มีโครงสร้าง | ระบบ | Console.app | ต่ำ |
| CocoaLumberjack | iOS | ข้อความ/JSON | DDFileLogger | ใช่ (กำหนดเอง) | ปานกลาง |
| Timber | Android | ข้อความ | Logcat/กำหนดเอง | Tree | ต่ำ |
| Sentry | iOS/Android | JSON | เซิร์ฟเวอร์ | ใช่ | ปานกลาง |
| Logcat | Android | ข้อความ | บัฟเฟอร์ | ADB | ต่ำ |
เมื่อเลือกเครื่องมือบันทึก ให้พิจารณา: คุณต้องการบันทึกระยะไกลหรือไม่ บันทึกเปลี่ยนแปลงบ่อยแค่ไหน และใครจะเป็นผู้วิเคราะห์ สำหรับสตาร์ทอัพ os_log หรือ Timber ก็เพียงพอ สำหรับองค์กร — CocoaLumberjack พร้อมส่งไปยังเซิร์ฟเวอร์ ที่ IT Sectr เราใช้ชุด Timber + Crashlytics สำหรับ Android และ os_log + CocoaLumberjack สำหรับ iOS
การบันทึกแบบมีโครงสร้าง — การเขียนบันทึกในรูปแบบ JSON แทนข้อความธรรมดา ตัวอย่าง: แทนที่จะเขียน "User login failed" เราเขียน {"event": "login_failed", "user_id": 123, "reason": "invalid_password"} นี่คือพื้นฐานสำหรับ การตรวจสอบ อัตโนมัติ — สแต็ก ELK และ Grafana กรอง รวบรวม และวิเคราะห์ข้อมูลดังกล่าว
การกรอง ตามฟิลด์: ค้นหาบันทึกทั้งหมดที่มี event=crash ในชั่วโมงที่ผ่านมา การรวบรวม: สร้างกราฟจำนวนข้อผิดพลาดตามเวอร์ชันแอปพลิเคชัน การรวมกับ ELK (Elasticsearch, Logstash, Kibana) หรือ Grafana การบันทึกแบบมีโครงสร้างไม่จำเป็นสำหรับรุ่นแรกๆ แต่จะสำคัญเมื่อ DAU เกิน 10,000
การบันทึกระยะไกล — การส่งบันทึกจากอุปกรณ์ไปยังเซิร์ฟเวอร์เพื่อการตรวจสอบแบบรวมศูนย์ ดำเนินการผ่าน Tree ที่กำหนดเอง (Android) หรือคำขอ HTTP ส่งเฉพาะ Error และ Warning — อย่าสิ้นเปลืองปริมาณการใช้งานของผู้ใช้ การหมุนเวียนบันทึก: DDFileLogger (iOS) ทุก 1 MB หรือ 1 วัน บน Android บัฟเฟอร์ Logcat มีจำกัด
Application Performance Monitoring (APM) — เครื่องมือประเภทหนึ่งสำหรับ การตรวจสอบแอปพลิเคชันมือถือ APM วัด: เวลาเริ่มต้น คำขอเครือข่าย FPS การใช้หน่วยความจำ ความถี่ของความขัดข้อง ผู้เล่นหลัก: Sentry (Performance), New Relic Mobile, Datadog Mobile
Sentry — ไม่เพียงแต่การรายงานความขัดข้อง แต่ยังรวมถึงการตรวจสอบประสิทธิภาพ Sentry Performance สร้างรอยกระจายที่แสดงว่าแต่ละขั้นตอนใช้เวลานานเท่าใด: จากการกดปุ่มจนถึงการตอบสนองของเซิร์ฟเวอร์ รองรับ iOS, Android, Flutter, React Native ฟรีสูงสุด 5k เหตุการณ์ต่อเดือน
New Relic Mobile ให้เมตริก: จำนวนเซสชัน เวลาในแอป ความถี่ของความขัดข้อง คำขอเครือข่าย Datadog Mobile เป็นเครื่องมือที่ทันสมัยกว่าพร้อมแดชบอร์ดแบบเรียลไทม์และการแจ้งเตือน ทั้งสองแบบเสียเงิน แต่มีระดับฟรี IT Sectr แนะนำให้เริ่มต้นด้วย Firebase Performance และเปลี่ยนไปใช้ APM แบบเสียเงินเมื่อ DAU เกิน 100,000
Firebase Performance — เครื่องมือ ตรวจสอบแอปพลิเคชันมือถือ ฟรีจาก Google รวบรวมเมตริกโดยอัตโนมัติ: เวลาเริ่มต้นแอปพลิเคชัน คำขอ HTTP (URL, วิธีการ, รหัสตอบสนอง), FPS สำหรับการติดตามที่กำหนดเอง ให้ใช้ Trace API การรวม: เพิ่ม SDK ใน build.gradle (Android) หรือ Podfile (iOS)
Trace — ส่วนของเวลาที่มีจุดเริ่มต้นและจุดสิ้นสุดที่คุณวัด ตัวอย่าง: trace = FirebasePerformance.getInstance().newTrace("checkout_process") เมตริก — ตัวบ่งชี้เชิงตัวเลข (ขนาดการตอบสนอง จำนวนรายการ) Firebase Performance ไม่ต้องการโครงสร้างพื้นฐานเซิร์ฟเวอร์ — ข้อมูลทั้งหมดผ่าน Firebase SDK เมื่อตรวจสอบแอปพลิเคชันมือถือ Trace API ให้บริบทสำหรับการวิเคราะห์ประสิทธิภาพ
คำถามที่พบบ่อย
ระดับมาตรฐาน: ERROR (ข้อผิดพลาดร้ายแรง), WARN (ปัญหาที่อาจเกิดขึ้น), INFO (เหตุการณ์สำคัญ), DEBUG (การดีบัก), VERBOSE (การติดตามโดยละเอียด) ในการผลิตจะเก็บ ERROR, WARN และ INFO ส่วนที่เหลือจะถูกปิดใช้งาน
Timber เป็นไลบรารีตัวหุ้มเหนือ Logcat โดย Jake Wharton สำหรับการบันทึกแอปพลิเคชันมือถือบน Android มันแทรกแท็กคลาสโดยอัตโนมัติ กำหนดค่า Tree และปิดการบันทึกในการผลิตด้วยโค้ดหนึ่งบรรทัด
APM (Application Performance Monitoring) — เครื่องมือประเภทหนึ่งสำหรับติดตามประสิทธิภาพ: เวลาเริ่มต้น คำขอเครือข่าย การใช้หน่วยความจำ ความถี่ของความขัดข้อง เมื่อตรวจสอบแอปพลิเคชันมือถือ New Relic, Datadog และ Firebase Performance ช่วยค้นหาคอขวดก่อนที่ผู้ใช้จะร้องเรียน
สำหรับสตาร์ทอัพ Firebase Performance ก็เพียงพอ — เครื่องมือตรวจสอบแอปพลิเคชันมือถือฟรี New Relic และ Datadog จะเชื่อมต่อเมื่อต้องการการติดตามโดยละเอียดและแดชบอร์ดที่กำหนดเอง IT Sectr แนะนำให้เริ่มต้นด้วย Firebase และเปลี่ยนไปใช้โซลูชันแบบเสียเงินเมื่อ DAU เกิน 100,000
การบันทึกแบบมีโครงสร้าง เป็นรูปแบบบันทึกใน JSON หรือคีย์-ค่าแทนข้อความธรรมดา ช่วยให้กรองบันทึกตามฟิลด์ สร้างแผนภูมิ และวิเคราะห์โดยอัตโนมัติใน ELK หรือ Grafana หากไม่มีบันทึกที่มีโครงสร้าง การหารูปแบบในบันทึกหลายพันรายการเป็นเรื่องยาก
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ