Trang chủ › Blog

Logcat là gì? Hướng dẫn đọc log Android cho người mới

Đăng ngày 08/10/2026 · 8 phút đọc · Team Gofable

Logcat là “hộp đen” của mọi ứng dụng Android. Hiểu cách Logcat hoạt động và đọc được một dòng log là kỹ năng đầu tiên mà mọi lập trình viên Android cần có trước khi debug bất kỳ lỗi nào.

Logcat là gì?

Logcat là hệ thống ghi nhật ký (log) của Android. Mọi thông điệp mà hệ điều hành, các dịch vụ hệ thống và ứng dụng ghi ra đều được đưa vào một tập các bộ đệm vòng (ring buffer) trong bộ nhớ của thiết bị. Tên “logcat” vừa chỉ hệ thống log này, vừa là tên công cụ dòng lệnh dùng để đọc nó: logcat giống như lệnh cat trong Linux nhưng dành cho log.

Vì là bộ đệm vòng có dung lượng giới hạn, log cũ sẽ bị ghi đè khi có log mới. Trên một thiết bị bận rộn, log của vài phút trước có thể đã biến mất. Đó là lý do việc xem log ngay khi lỗi đang xảy ra thường hiệu quả hơn nhiều so với xin file log sau khi sự việc đã qua.

Ứng dụng ghi log như thế nào?

Trong mã nguồn, lập trình viên dùng lớp android.util.Log để ghi log. Mỗi lời gọi gồm một tag để phân loại và một thông điệp:

private const val TAG = "PaymentFlow"

fun pay(orderId: String) {
    Log.i(TAG, "Bắt đầu thanh toán đơn $orderId")
    try {
        gateway.charge(orderId)
        Log.d(TAG, "Gateway trả về thành công")
    } catch (e: IOException) {
        Log.e(TAG, "Thanh toán thất bại cho đơn $orderId", e)
    }
}

Các hàm Log.v, Log.d, Log.i, Log.w, Log.e tương ứng với các mức độ log khác nhau. Khi truyền thêm đối tượng Throwable như ví dụ trên, Logcat sẽ in kèm toàn bộ stack trace, cực kỳ hữu ích để tìm dòng code gây lỗi. Ý nghĩa và cách chọn mức log được phân tích kỹ trong bài Các mức độ log trong Android.

Cấu trúc của một dòng log

Với định dạng mặc định threadtime, một dòng log trông như sau:

10-08 14:32:05.118  4721  4790 E PaymentFlow: Thanh toán thất bại cho đơn A1029
Thành phầnVí dụÝ nghĩa
Ngày giờ10-08 14:32:05.118Thời điểm ghi log, chính xác tới mili giây.
PID4721Mã tiến trình. Mỗi lần ứng dụng khởi động lại, PID thường thay đổi.
TID4790Mã luồng ghi log. Giúp phân biệt log từ luồng giao diện và luồng nền.
Mức độEV, D, I, W, E hoặc A (Assert).
TagPaymentFlowNhãn phân loại do lập trình viên đặt.
Thông điệpThanh toán thất bại…Nội dung log.

Khi đọc log để tìm lỗi, hãy để ý PID: nếu PID của ứng dụng đột ngột thay đổi, nhiều khả năng ứng dụng vừa bị crash và được khởi động lại.

Các bộ đệm log

Android không lưu mọi log vào một chỗ. Có nhiều bộ đệm cho từng loại log, có thể chọn bằng tùy chọn -b của logcat:

Nếu không chỉ định, lệnh adb logcat mặc định hiển thị các bộ đệm main, system và crash.

Cách xem Logcat

1. Dùng adb trên dòng lệnh

Khi thiết bị đã bật gỡ lỗi USB và kết nối với máy tính có Android SDK Platform Tools:

# Xem log liên tục
adb logcat

# Chỉ in log hiện có rồi thoát (hữu ích khi lưu ra file)
adb logcat -d > log.txt

# Xóa bộ đệm để bắt đầu lại từ đầu
adb logcat -c

# Chỉ xem bộ đệm crash
adb logcat -b crash

2. Dùng cửa sổ Logcat trong Android Studio

Android Studio có cửa sổ Logcat riêng với tô màu theo mức độ và ô truy vấn. Bạn có thể gõ package:mine để chỉ xem log của ứng dụng đang chạy, hoặc level:error để chỉ xem lỗi. Cách lọc chi tiết có trong bài Lọc log Logcat hiệu quả.

3. Xem từ xa qua trình duyệt

Cả hai cách trên đều cần thiết bị nằm cạnh máy tính của bạn. Khi thiết bị ở nơi khác, như trong tay QA ở văn phòng khác hay trên máy của khách hàng, bạn có thể dùng HVTD-9803 LogCat để log của ứng dụng được gửi về trình duyệt theo thời gian thực. Bài Debug ứng dụng Android từ xa so sánh các phương án cho tình huống này.

Một vài lưu ý quan trọng

Tóm tắt

Logcat là nguồn thông tin quan trọng nhất khi debug ứng dụng Android. Nắm được cấu trúc một dòng log, biết log nằm ở bộ đệm nào và biết cách xem log trong từng hoàn cảnh sẽ giúp bạn rút ngắn đáng kể thời gian tìm lỗi.