Console.app: nó là gì, tính năng và cách đọc log trong macOS

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

Console.app là ứng dụng tích hợp của macOS để xem, lọc và phân tích log hệ thống và người dùng. Nó hiển thị các thông báo từ hệ thống ghi nhật ký hợp nhất của Apple (os_log) theo thời gian thực, cho phép nhà phát triển xem sự cố, lỗi và thông báo gỡ lỗi mà không cần kết nối với Xcode. Theo Apple Support, Console.app hỗ trợ lọc theo subsystem, category, mức độ nghiêm trọng và tiến trình, cũng như xuất log sang .logarchive để chia sẻ với nhà phát triển. Đây là công cụ không thể thiếu để chẩn đoán sự cố trên Mac: bộ lọc và tìm kiếm đã lưu cho phép nhanh chóng tìm lỗi ứng dụng giữa hàng nghìn thông báo hệ thống.

Những điểm chính

  • Console.app — trình xem log tích hợp của macOS hoạt động với hệ thống ghi nhật ký hợp nhất của Apple
  • Lọc — tìm kiếm theo subsystem, category, mức (Error, Fault, Debug) và nội dung thông báo với hỗ trợ biểu thức chính quy
  • Chế độ — Live (luồng thời gian thực) và Historical (log đã lưu trữ), chuyển đổi qua thanh công cụ
  • Xuất — lưu log dưới dạng .logarchive, .txt và .json để chia sẻ với nhà phát triển hoặc đính kèm vào báo cáo lỗi
  • Tìm kiếm đã lưu — bộ lọc có tên cho các tình huống phổ biến: tất cả lỗi ứng dụng, log mạng, CrashReporter

Console.app là gì

Console.app là giao diện đồ họa cho hệ thống ghi nhật ký hợp nhất của Apple. Nó đã thay thế ứng dụng Console cũ (như một phần của macOS) và cung cấp quyền truy cập vào tất cả log hệ thống và ứng dụng được ghi qua các API os_log, os_trace và syslog. Console.app nằm trong /Applications/Utilities/ trên mọi máy Mac.

Không giống như Xcode, chỉ hiển thị log của ứng dụng được khởi chạy từ IDE, Console.app hiển thị log của tất cả tiến trình trên hệ thống cùng lúc. Điều này cho phép chẩn đoán các sự cố chỉ xảy ra khi ứng dụng được khởi chạy bên ngoài Xcode hoặc trong nền. Console.app cũng hiển thị log hệ thống — kernel, launchd, WindowServer — rất hữu ích để gỡ lỗi các sự cố cấp thấp.

Console.app không yêu cầu cài đặt công cụ bổ sung hay kết nối internet. Tất cả dữ liệu được lưu trữ cục bộ trong cơ sở dữ liệu .tracev3 và ứng dụng hoạt động hoàn toàn ngoại tuyến. Để xem log từ máy Mac khác hoặc thiết bị iOS, hãy sử dụng lệnh log collect rồi mở .logarchive trong Console.app.

Giao diện Console.app

Giao diện Console.app gồm ba khu vực chính: thanh bên với bộ lọc, bảng thông báo và bảng chi tiết của thông báo đã chọn. Thanh bên chứa các mục Devices (nguồn log khả dụng), Reports (báo cáo sự cố hệ thống) và Saved Searches (truy vấn tìm kiếm đã lưu).

Bảng thông báo hiển thị danh sách log với các cột: Time (dấu thời gian), Category (danh mục), Level (mức độ nghiêm trọng — mã màu), Process (tên tiến trình), Message (nội dung thông báo). Nhấp vào bất kỳ thông báo nào sẽ mở bảng chi tiết hiển thị subsystem, mã định danh hoạt động, ID luồng và nội dung đầy đủ có định dạng.

Console.app tô màu thông báo: đỏ cho Fault, vàng cho Error, xanh lam cho Debug, xám cho Info. Thông báo Default không được tô màu. Điều này cho phép quét trực quan luồng log và phát hiện ngay lập tức các sự kiện quan trọng.

swift
// Log sẽ xuất hiện trong Console.app
import OSLog

let logger = Logger(
    subsystem: "com.example.myapp",
    category: "network"
)

logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")

// Các thông báo này hiển thị trong Console.app với bộ lọc "myapp"

Bộ lọc và tìm kiếm trong Console.app

Lọc là tính năng chính của Console.app, biến luồng hàng nghìn thông báo mỗi giây thành danh sách có thể đọc được. Trường tìm kiếm ở trên cùng hỗ trợ điều kiện AND: nhiều từ cách nhau bằng dấu cách chỉ hiển thị thông báo chứa tất cả các từ. Ví dụ: myapp error hiển thị tất cả log của ứng dụng myapp với mức Error.

Bộ lọc subsystem trong thanh bên cho phép chọn một hoặc nhiều subsystem. Đây là cách nhanh nhất để tách log của một ứng dụng cụ thể khỏi thông báo hệ thống. Bộ lọc category khả dụng sau khi chọn subsystem — nó hiển thị tất cả danh mục được ứng dụng đã chọn sử dụng. Bộ lọc mức giới hạn thông báo theo mức độ nghiêm trọng: có thể chỉ hiển thị lỗi hoặc chỉ thông báo gỡ lỗi.

Loại bộ lọcVí dụKết quả
Văn bảncrash paymentThông báo chứa cả crash và payment
Subsystemcom.example.myappChỉ log của ứng dụng được chỉ định
LevelError + FaultChỉ lỗi và sự cố nghiêm trọng
CategorynetworkThông báo có danh mục network
Thời gian1 giờ quaChỉ thông báo trong khoảng đã chọn

Biểu thức chính quy trong tìm kiếm

Trường tìm kiếm của Console.app hỗ trợ regex qua cú pháp REGEX:pattern. Ví dụ: REGEX:error.*tim(e|out) tìm tất cả thông báo chứa “error” và một từ bắt đầu bằng “tim” kết thúc bằng “e” hoặc “out”. Regex chỉ hoạt động trong trường tìm kiếm, không hoạt động trong bộ lọc subsystem hay category.

Chế độ Live và Historical

Live là chế độ thời gian thực trong đó Console.app hiển thị thông báo mới ngay khi chúng xuất hiện trong bộ đệm vòng của nhân. Chế độ này hoạt động theo mặc định và phù hợp để gỡ lỗi ứng dụng đang chạy: bạn khởi chạy ứng dụng và thấy log của nó với độ trễ 1–5 giây. Nút Live (hoặc ⌘L) bật và tắt luồng.

Historical là chế độ xem lưu trữ. Console.app lưu trữ tất cả thông báo trong 7–14 ngày qua (có thể cấu hình trong hệ thống) trong cơ sở dữ liệu .tracev3. Chế độ Historical mở kho lưu trữ này và cho phép tìm kiếm trong đó bằng bất kỳ bộ lọc nào, không chỉ luồng hiện tại. Điều này rất cần thiết để phân tích các sự cố xảy ra vào ban đêm hoặc khi ứng dụng chạy mà không kết nối với máy Mac.

Việc chuyển đổi giữa các chế độ được thực hiện qua nút Live trên thanh công cụ. Khi Live tắt, Console.app hiển thị dữ liệu lịch sử. Ở chế độ này, bạn có thể điều hướng dòng thời gian bằng lịch hoặc các nút ← →. Dữ liệu lịch sử chỉ khả dụng cho log đã lưu vào đĩa — các thông báo bị ghi đè trong bộ đệm vòng sẽ không xuất hiện trong kho lưu trữ.

Xuất và chia sẻ log

Console.app hỗ trợ xuất log đã lọc ở nhiều định dạng. File → Export → Save cho phép chọn định dạng: .logarchive (định dạng gốc của Apple, bao gồm tất cả siêu dữ liệu), .txt (văn bản thuần với cột) và .json (dữ liệu có cấu trúc với trường). Để đính kèm vào báo cáo lỗi, hãy sử dụng .logarchive — nó có thể được mở trên bất kỳ máy Mac nào trong Console.app.

Xuất từ thiết bị iOS: qua Xcode (Devices → Open Console) hoặc qua lệnh log collect --device --output ./archive.logarchive trong terminal. Mở .logarchive kết quả trong Console.app trên máy Mac — log đến từ thiết bị từ xa, nhưng bộ lọc và tìm kiếm hoạt động giống như với log cục bộ.

swift
// Xuất log thiết bị iOS qua terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json

// Ví dụ: xuất log trong giờ qua
// log show --predicate 'subsystem == "com.example.myapp"' \
//   --info --debug --last 1h --output json > logs.json

// Phân tích log đã xuất trong Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
    .decode([LogEntry].self, from: jsonData)

Chia sẻ log

.logarchive là định dạng tối ưu để gửi cho đồng nghiệp hoặc đính kèm vào ticket JIRA. Tệp chứa không chỉ thông báo mà còn subsystem, category, dấu thời gian, ID luồng và tất cả siêu dữ liệu. Kích thước lưu trữ nhỏ hơn đáng kể so với log thô nhờ nén .tracev3. Trước khi gửi, hãy đảm bảo log không chứa dữ liệu riêng tư: sử dụng bộ lọc theo subsystem của ứng dụng để loại trừ log hệ thống có thể chứa thông tin bảo mật từ các tiến trình khác.

Ví dụ gỡ lỗi thực tế với Console.app

Chẩn đoán sự cố không cần Xcode: nếu ứng dụng bị sập khi khởi chạy bên ngoài Xcode, Console.app sẽ hiển thị thông báo Fault từ tiến trình. Tìm Reports → Crash Reports trong thanh bên — báo cáo sự cố đầy đủ có chữ ký và stack được hiển thị ở đó. Sử dụng bộ lọc subsystem cho ứng dụng của bạn và đặt mức Error+Fault để xem tất cả sự kiện quan trọng trước khi sập.

Phân tích hiệu suất qua Console.app

Console.app cho phép theo dõi độ trễ trong ứng dụng bằng dấu thời gian. Nếu thời gian giữa hai thông báo liên quan (ví dụ: “yêu cầu đã gửi” và “phản hồi đã nhận”) vượt quá mong đợi, đó là dấu hiệu của vấn đề hiệu suất. Bộ lọc trên subsystem của ứng dụng với mức Default sẽ hiển thị tất cả sự kiện chính với độ chính xác đến mili giây.

Tìm rò rỉ bộ nhớ: khi xảy ra rò rỉ bộ nhớ, hệ thống gửi cảnh báo bộ nhớ qua os_log với danh mục memory và mức Error. Trong Console.app, lọc theo từ memory và chọn subsystem của bạn. Nếu cảnh báo lặp lại mỗi 5–10 giây, ứng dụng đang tiêu thụ bộ nhớ tích cực. Bạn cũng có thể bật log Debug để theo dõi cấp phát.

Gỡ lỗi yêu cầu mạng: nếu ứng dụng của bạn sử dụng os_log cho sự kiện mạng, Console.app sẽ hiển thị tất cả yêu cầu và phản hồi với thời gian. Bộ lọc category=network giảm nhiễu. Nếu thời gian giữa yêu cầu và phản hồi vượt quá mong đợi, hãy tìm thông báo có level=Error — chúng sẽ chỉ ra timeout hoặc lỗi DNS.

swift
// Cấu trúc để phân tích log JSON của Console.app
struct LogEntry: Codable {
    let timestamp: String
    let eventMessage: String
    let subsystem: String
    let category: String
    let messageType: UInt8

    var level: String {
        switch messageType {
        case 1: return "Fault"
        case 16: return "Error"
        case 17: return "Debug"
        default: return "Default"
        }
    }
}

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

Console.app nằm ở đâu trên Mac?

Console.app nằm trong thư mục /Applications/Utilities/. Bạn có thể mở nó qua Spotlight (⌘Space → Console) hoặc qua Finder → Ứng dụng → Tiện ích → Console. Biểu tượng ứng dụng là bong bóng hội thoại cách điệu với bánh răng.

Tại sao Console.app hiển thị <private> thay vì giá trị?

os_log che dấu chuỗi và đối tượng là private theo mặc định. Console.app hiển thị chúng dưới dạng <private> trong chế độ production. Để xem giá trị thực, hãy khởi chạy ứng dụng từ Xcode hoặc bật hồ sơ thu thập với mức Debug cho subsystem của bạn.

Làm cách nào để lọc chỉ log của ứng dụng của tôi?

Trong thanh bên Console.app, chọn subsystem của bạn (com.example.app) trong mục Devices → thiết bị của bạn → Processes. Cách khác — nhập tên tiến trình vào trường tìm kiếm và chọn Process: YourApp từ danh sách thả xuống.

Console.app lưu trữ log trong bao lâu?

Theo mặc định, macOS lưu trữ log trong .tracev3 trong 7–14 ngày tùy thuộc vào dung lượng đĩa khả dụng. Khi dung lượng thấp, các log cũ nhất sẽ tự động bị xóa. Thời gian lưu trữ có thể tăng lên qua sudo log config, nhưng không được khuyến nghị cho máy production.

Tôi có thể xem log thiết bị iOS trong Console.app không?

Có, kết nối thiết bị iOS với Mac qua USB, mở Xcode → Devices → chọn thiết bị → Open Console. Console.app sẽ hiển thị log từ thiết bị đã kết nối theo thời gian thực. Để thu thập ngoại tuyến, hãy sử dụng log collect trong terminal với cờ --device.

Tổng kết

  • Console.app — công cụ tích hợp của macOS để xem log ghi nhật ký hợp nhất (os_log), không cần Xcode hay cài đặt thêm
  • Bộ lọc — tìm kiếm theo subsystem, category, mức độ nghiêm trọng, văn bản và regex với điều kiện AND để cô lập ghi log của ứng dụng cụ thể
  • Chế độ — Live (luồng thời gian thực với độ trễ 1–5 giây) và Historical (lưu trữ 7–14 ngày) để phân tích sự cố đã xảy ra
  • Xuất — .logarchive với siêu dữ liệu đầy đủ để chia sẻ với đồng nghiệp, .json để phân tích lập trình, .txt để xem nhanh
  • Chẩn đoán — tìm sự cố, rò rỉ bộ nhớ và lỗi mạng không cần Xcode qua lọc lỗi và sự cố nghiêm trọng với chỉ thị màu Fault
  • Thiết bị từ xa — xem log thiết bị iOS qua Xcode hoặc xuất qua log collect và mở .logarchive trong Console.app trên Mac
  • Quyền riêng tư — os_log che dấu dữ liệu <private> trong Console.app ở chế độ production; để gỡ lỗi dùng Xcode hoặc hồ sơ thu thập mức Debug

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

Đọc thêm