Ghi log và giám sát trong phát triển di động: bản chất, công cụ nào và cách thiết lập

Tác giả: IT Sectr Đã đăng: 2026-05-27 Thời gian đọc: 8 phút

Ghi log và giám sát là hai trụ cột của sự ổn định ứng dụng di động. Theo Gartner (2025), thị trường giải pháp APM sẽ đạt 8 tỷ đô la vào năm 2027. Ghi log đúng cách không chỉ cho phép tìm lỗi mà còn dự đoán vấn đề trước khi chúng ảnh hưởng đến người dùng.

Những điểm chính

  • Trên iOS, các công cụ chính là os_log (ghi log hệ thống tích hợp) và CocoaLumberjack (thư viện linh hoạt với xoay vòng và định dạng). Giám sát trên iOS cho phép kiểm soát hiệu suất theo thời gian thực.
  • Trên Android, tiêu chuẩn là Timber (một lớp bọc trên Logcat) và Log hệ thống. Timber tự động chèn thẻ lớp và quản lý các cấp độ ghi log.
  • Ghi log có cấu trúc — ghi log ở định dạng JSON. Cho phép phân tích log tự động qua ELK, Grafana hoặc Datadog. Được khuyến nghị cho sản xuất và giám sát tự động.
  • APM (Application Performance Monitoring) — một lớp công cụ cho giám sát ứng dụng di động: New Relic, Datadog, Firebase Performance.
  • Xoay vòng log và ghi log từ xa là bắt buộc cho sản xuất. Log không được làm đầy bộ nhớ thiết bị và phải có sẵn cho nhà phát triển từ xa.

Ghi log và giám sát trên iOS: os_log và CocoaLumberjack

Ghi log ứng dụng di động trên iOS được xây dựng trên os_log — hệ thống tích hợp của Apple, có sẵn từ iOS 10. os_log ghi log vào một log hệ thống duy nhất (trên thiết bị hoặc qua Console.app), hỗ trợ danh mục, cấp độ và thẻ riêng tư. Sự kết hợp giữa ghi log và giám sát trên iOS qua Console.app và xcrun cho phép theo dõi lỗi và hiệu suất trong thời gian thực.

Log Level trên iOS

os_log có các cấp độ: Default, Info, Debug, Error, Fault. Trong sản xuất, giữ lại Error và Fault — Debug và Info bị vô hiệu hóa. Chọn đúng cấp độ là một phần của chiến lược giám sát ứng dụng di động trên iOS. Quyền riêng tư: %{public}@ cho dữ liệu không được bảo vệ, %{private}@ cho dữ liệu cá nhân.

CocoaLumberjack

CocoaLumberjack là một thư viện phổ biến cho ghi log iOS. Không giống os_log, nó hỗ trợ định dạng tùy chỉnh, ghi không đồng bộ và xoay vòng log. DDLog, DDTTYLogger (bảng điều khiển), DDFileLogger (tệp có xoay vòng). Để giám sát từ xa, CocoaLumberjack có thể kết hợp với os_log — ghi vào tệp cho ghi log từ xa và vào os_log cho Console.app.

Ghi log và giám sát trên Android: Timber và Log Level

Để ghi log ứng dụng di động trên Android, sử dụng Timber — một thư viện của Jake Wharton đã trở thành tiêu chuẩn cho nền tảng. Timber là một lớp bọc trên Android Log (Logcat) tự động thêm thẻ lớp và cấu hình Tree. Timber là một phần của hệ thống giám sát ứng dụng di động Android: DebugTree để gỡ lỗi, CrashlyticsTree để gửi dữ liệu.

Timber chi tiết

Timber sử dụng Tree — một thành phần quyết định làm gì với log. Trong bản dựng gỡ lỗi, DebugTree (đầu ra đến Logcat), trong bản phát hành — CrashlyticsTree (gửi sự cố). Timber.wtf() ghi log lỗi nghiêm trọng. Timber.tag("CustomTag") ghi đè thẻ. Để giám sát hiệu quả, Timber được kết hợp với các công cụ APM.

Log Level trên Android

Android Log có các cấp độ: VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT. ProGuard/R8 xóa Log.d và Log.v trong bản phát hành — Timber cho phép ghi log qua Plant. Việc chọn cấp độ ảnh hưởng đến chất lượng giám sát ứng dụng di động — trong sản xuất, giữ lại WARN và ERROR.

Công cụ Nền tảng Định dạng Xoay vòng Từ xa Độ phức tạp
os_logiOSCó cấu trúcHệ thốngConsole.appThấp
CocoaLumberjackiOSVăn bản/JSONDDFileLoggerCó (tùy chỉnh)Trung bình
TimberAndroidVăn bảnLogcat/Tùy chỉnhTreeThấp
SentryiOS/AndroidJSONMáy chủTrung bình
LogcatAndroidVăn bảnBộ đệmADBThấp

Khi chọn công cụ ghi log, hãy cân nhắc: bạn có cần ghi log từ xa không, log thay đổi thường xuyên như thế nào và ai sẽ phân tích chúng. Đối với startup, os_log hoặc Timber là đủ. Đối với doanh nghiệp — CocoaLumberjack với gửi đến máy chủ. Tại IT Sectr, chúng tôi sử dụng kết hợp Timber + Crashlytics cho Android và os_log + CocoaLumberjack cho iOS.

Ghi log có cấu trúc

Ghi log có cấu trúc — ghi log ở định dạng JSON thay vì văn bản thuần. Ví dụ: thay vì "User login failed" chúng tôi ghi {"event": "login_failed", "user_id": 123, "reason": "invalid_password"}. Đây là nền tảng cho giám sát tự động — ELK stack và Grafana lọc, tổng hợp và phân tích dữ liệu như vậy.

Lợi ích của ghi log có cấu trúc

Lọc theo trường: tìm tất cả log có event=crash trong giờ qua. Tổng hợp: xây dựng biểu đồ số lượng lỗi theo phiên bản ứng dụng. Tích hợp với ELK (Elasticsearch, Logstash, Kibana) hoặc Grafana. Ghi log có cấu trúc không bắt buộc cho các bản phát hành đầu tiên, nhưng trở nên quan trọng khi DAU vượt quá 10.000.

Ghi log từ xa và xoay vòng log

Ghi log từ xa — gửi log từ thiết bị đến máy chủ để giám sát tập trung. Được triển khai qua Tree tùy chỉnh (Android) hoặc yêu cầu HTTP. Chỉ gửi Error và Warning — không lãng phí lưu lượng của người dùng. Xoay vòng log: DDFileLogger (iOS) mỗi 1 MB hoặc 1 ngày. Trên Android, bộ đệm Logcat bị giới hạn.

APM và giám sát ứng dụng di động: Sentry, New Relic, Datadog

Application Performance Monitoring (APM) — một lớp công cụ cho giám sát ứng dụng di động. APM đo lường: thời gian khởi động, yêu cầu mạng, FPS, sử dụng bộ nhớ, tần suất sự cố. Những người chơi chính: Sentry (Performance), New Relic Mobile, Datadog Mobile.

Sentry Performance

Sentry — không chỉ báo cáo sự cố mà còn giám sát hiệu suất. Sentry Performance tạo các dấu vết phân tán cho thấy mỗi giai đoạn mất bao lâu: từ nhấn nút đến phản hồi máy chủ. Hỗ trợ iOS, Android, Flutter, React Native. Miễn phí lên đến 5k sự kiện mỗi tháng.

New Relic và Datadog

New Relic Mobile cung cấp các chỉ số: số phiên, thời gian trong ứng dụng, tần suất sự cố, yêu cầu mạng. Datadog Mobile là một công cụ hiện đại hơn với bảng điều khiển thời gian thực và cảnh báo. Cả hai đều trả phí, nhưng có các gói miễn phí. IT Sectr khuyến nghị bắt đầu với Firebase Performance và chuyển sang APM trả phí khi DAU vượt quá 100.000.

Firebase Performance

Firebase Performance — một công cụ giám sát ứng dụng di động miễn phí từ Google. Tự động thu thập các chỉ số: thời gian khởi động ứng dụng, yêu cầu HTTP (URL, phương thức, mã phản hồi), FPS. Để theo dõi tùy chỉnh, sử dụng Trace API. Tích hợp: thêm SDK vào build.gradle (Android) hoặc Podfile (iOS).

Trace và chỉ số

Trace — một đoạn thời gian có bắt đầu và kết thúc mà bạn đo lường. Ví dụ: trace = FirebasePerformance.getInstance().newTrace("checkout_process"). Chỉ số — các chỉ báo số (kích thước phản hồi, số lượng mục). Firebase Performance không yêu cầu cơ sở hạ tầng máy chủ — tất cả dữ liệu đi qua Firebase SDK. Khi giám sát ứng dụng di động, Trace API cung cấp ngữ cảnh để phân tích hiệu suất.

Câu hỏi thường gặp

Có những cấp độ ghi log nào và khi nào sử dụng chúng?

Các cấp độ tiêu chuẩn: ERROR (lỗi nghiêm trọng), WARN (vấn đề tiềm ẩn), INFO (sự kiện chính), DEBUG (gỡ lỗi), VERBOSE (theo dõi chi tiết). Trong sản xuất, giữ lại ERROR, WARN và INFO, các cấp độ khác bị vô hiệu hóa.

Timber khác Logcat trong Android như thế nào?

Timber là một thư viện lớp bọc trên Logcat của Jake Wharton để ghi log ứng dụng di động trên Android. Nó tự động chèn thẻ lớp, cấu hình Tree và vô hiệu hóa log trong sản xuất bằng một dòng mã.

APM là gì và tại sao ứng dụng di động cần nó?

APM (Application Performance Monitoring) — một lớp công cụ để theo dõi hiệu suất: thời gian khởi động, yêu cầu mạng, sử dụng bộ nhớ, tần suất sự cố. Khi giám sát ứng dụng di động, New Relic, Datadog và Firebase Performance giúp tìm điểm nghẽn trước khi người dùng phàn nàn.

Startup có nên sử dụng giải pháp APM trả phí không?

Đối với startup, Firebase Performance là đủ — một công cụ giám sát ứng dụng di động miễn phí. New Relic và Datadog được kết nối khi cần theo dõi chi tiết và bảng điều khiển tùy chỉnh. IT Sectr khuyến nghị bắt đầu với Firebase và chuyển sang giải pháp trả phí khi DAU vượt quá 100.000.

Ghi log có cấu trúc là gì và nó tốt hơn văn bản thuần như thế nào?

Ghi log có cấu trúc là định dạng log ở dạng JSON hoặc khóa-giá trị thay vì văn bản thuần. Nó cho phép lọc log theo trường, xây dựng biểu đồ và tự động phân tích trong ELK hoặc Grafana. Nếu không có log có cấu trúc, rất khó tìm ra các mẫu trong hàng nghìn bản ghi.

Tóm tắt

  • os_log — công cụ ghi log và giám sát cơ bản trên iOS. CocoaLumberjack thêm tính linh hoạt, xoay vòng và ghi log từ xa.
  • Timber — tiêu chuẩn ghi log ứng dụng di động trên Android. DebugTree để gỡ lỗi, CrashlyticsTree cho bản phát hành.
  • Ghi log có cấu trúc (JSON) cần thiết cho phân tích log tự động. Tích hợp với ELK, Grafana, Datadog.
  • APM — Sentry Performance, New Relic, Datadog. Firebase Performance — công cụ giám sát ứng dụng di động miễn phí cho startup.
  • Xoay vòng log ngăn tràn bộ nhớ thiết bị. Cấu hình DDFileLogger (iOS) hoặc sử dụng bộ đệm Logcat (Android).
  • Ghi log từ xa — chỉ gửi log Error và Warning. Tất cả log đều tiêu tốn lưu lượng người dùng.
  • Trace API và breadcrumbs (Sentry) cung cấp ngữ cảnh cho giám sát ứng dụng di động, biến log thành câu chuyện sự cố.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án