Console.app adalah aplikasi bawaan macOS untuk melihat, memfilter, dan menganalisis log sistem dan pengguna. Ini menampilkan pesan dari unified logging system Apple (os_log) secara real-time, memungkinkan pengembang melihat crash, error, dan pesan debug tanpa terhubung ke Xcode. Menurut Apple Support, Console.app mendukung pemfilteran berdasarkan subsystem, category, tingkat keparahan, dan proses, serta ekspor log ke .logarchive untuk dikirim ke pengembang. Ini adalah alat yang sangat diperlukan untuk mendiagnosis masalah di Mac: filter dan pencarian tersimpan memungkinkan Anda menemukan error di aplikasi dengan cepat di antara ribuan pesan sistem.
Poin Penting
Console.app adalah antarmuka grafis untuk unified logging system Apple. Ini menggantikan aplikasi Console lama (sebagai bagian dari macOS) dan menyediakan akses ke semua log sistem dan aplikasi yang ditulis melalui API os_log, os_trace, dan syslog. Console.app tersedia di /Applications/Utilities/ di Mac mana pun.
Tidak seperti Xcode, yang hanya menampilkan log untuk aplikasi yang dijalankan dari IDE, Console.app menampilkan log semua proses di sistem secara bersamaan. Ini memungkinkan diagnosis masalah yang hanya muncul saat menjalankan aplikasi di luar Xcode atau di latar belakang. Console.app juga menampilkan log sistem — kernel, launchd, WindowServer, yang berguna untuk debugging masalah tingkat rendah.
Console.app tidak memerlukan instalasi alat tambahan atau koneksi internet. Semua data disimpan secara lokal di database .tracev3, dan aplikasi berfungsi sepenuhnya offline. Untuk melihat log dari Mac atau perangkat iOS lain, gunakan perintah log collect yang diikuti dengan membuka .logarchive di Console.app.
Antarmuka Console.app terdiri dari tiga area utama: panel samping dengan filter, tabel pesan, dan panel detail pesan yang dipilih. Panel samping berisi bagian Devices (sumber log yang tersedia), Reports (laporan sistem tentang kegagalan), dan Saved Searches (kueri pencarian tersimpan).
Tabel pesan menampilkan daftar log dengan kolom: Time (stempel waktu), Category (kategori), Level (tingkat keparahan — indikasi warna), Process (nama proses), Message (teks pesan). Klik pada pesan mana pun membuka panel detail, yang menampilkan subsystem, activity identifier, thread ID, dan teks lengkap dengan format.
Console.app menyorot pesan dengan warna: merah untuk Fault, kuning untuk Error, biru untuk Debug, abu-abu untuk Info. Pesan Default tidak disorot. Ini memungkinkan pemindaian visual aliran log dan pengamatan langsung kejadian kritis.
// Log yang akan muncul di 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")
// Pesan ini terlihat di Console.app dengan filter “myapp”
Pemfilteran — fungsi utama Console.app, yang mengubah aliran ribuan pesan per detik menjadi daftar yang dapat dibaca. Bidang pencarian di bagian atas mendukung kondisi AND: beberapa kata dipisah spasi menampilkan hanya pesan yang mengandung semua kata. Misalnya, myapp error akan menampilkan semua log aplikasi myapp dengan level Error.
Filter Subsystem di panel samping memungkinkan Anda memilih satu atau lebih subsystem. Ini adalah cara tercepat untuk mengisolasi log aplikasi tertentu dari pesan sistem. Filter Category tersedia setelah memilih subsystem — ini menampilkan semua kategori yang digunakan oleh aplikasi yang dipilih. Filter Level membatasi pesan berdasarkan tingkat keparahan: hanya error atau hanya pesan debug yang dapat ditampilkan.
| Jenis Filter | Contoh | Hasil |
|---|---|---|
| Teks | crash payment | Pesan yang mengandung crash DAN payment |
| Subsystem | com.example.myapp | Hanya log aplikasi yang ditentukan |
| Level | Error + Fault | Hanya error dan kegagalan kritis |
| Category | network | Pesan dengan kategori network |
| Waktu | 1 jam terakhir | Pesan hanya dari interval yang dipilih |
Bidang pencarian Console.app mendukung regex melalui konstruksi REGEX:pattern. Contoh: REGEX:error.*tim(e|out) akan menemukan semua pesan yang mengandung “error” dan kata yang dimulai dengan “tim” dan diakhiri dengan “e” atau “out”. Regex hanya berfungsi di bidang pencarian, bukan di filter subsystem atau category.
Live — mode waktu nyata, di mana Console.app menampilkan pesan baru saat muncul di buffer sirkular kernel. Mode ini aktif secara default dan cocok untuk debugging aplikasi yang sedang berjalan: Anda menjalankan aplikasi dan melihat log-nya dengan penundaan 1–5 detik. Tombol Live (atau ⌘L) mengaktifkan dan menonaktifkan aliran.
Historical — mode melihat arsip. Console.app menyimpan semua pesan selama 7–14 hari terakhir (dapat dikonfigurasi di sistem) di database .tracev3. Mode Historical membuka arsip ini dan memungkinkan pencarian dengan filter apa pun, tidak hanya aliran saat ini. Ini sangat diperlukan untuk menganalisis masalah yang terjadi di malam hari atau saat aplikasi berjalan tanpa koneksi ke Mac.
Peralihan antara mode dilakukan melalui tombol Live di toolbar. Saat Live dimatikan, Console.app menampilkan data historis. Dalam mode ini, Anda dapat menavigasi garis waktu menggunakan kalender atau tombol ← →. Data Historical hanya tersedia untuk log yang disimpan ke disk — pesan yang ditimpa di buffer sirkular tidak masuk ke arsip.
Console.app mendukung ekspor log yang difilter dalam beberapa format. File → Export → Save memilih format: .logarchive (format asli Apple, mencakup semua metadata), .txt (teks biasa dengan kolom) dan .json (data terstruktur dengan bidang). Untuk melampirkan ke laporan bug gunakan .logarchive — dapat dibuka di Mac mana pun di Console.app.
Ekspor dari perangkat iOS: melalui Xcode (Devices → Open Console) atau melalui perintah log collect --device --output ./archive.logarchive di terminal. .logarchive yang diperoleh buka di Console.app di Mac — log berasal dari perangkat jarak jauh, tetapi filter dan pencarian berfungsi sama seperti log lokal.
// Ekspor log perangkat iOS melalui terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Contoh: mengekspor log dari jam terakhir
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Penguraian log yang diekspor di Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — format optimal untuk dikirim ke rekan kerja atau dilampirkan ke tiket JIRA. File berisi tidak hanya pesan, tetapi juga subsystem, category, timestamps, thread IDs, dan semua metadata. Ukuran arsip jauh lebih kecil daripada log mentah berkat kompresi .tracev3. Sebelum mengirim, pastikan log tidak berisi data pribadi: gunakan filter subsystem aplikasi Anda untuk mengecualikan log sistem yang mungkin berisi informasi rahasia proses lain.
Diagnosis crash tanpa Xcode: jika aplikasi crash saat dijalankan di luar Xcode, Console.app akan menampilkan pesan Fault dari proses. Temukan di panel samping Reports → Crash Reports — di sana ditampilkan laporan crash lengkap dengan tanda tangan dan stack. Gunakan filter subsystem untuk aplikasi Anda dan atur level Error+Fault untuk melihat semua kejadian kritis sebelum crash.
Console.app memungkinkan pelacakan penundaan dalam aplikasi berdasarkan stempel waktu. Jika antara dua pesan terkait (misalnya, “Permintaan dikirim” dan “Jawaban diterima”) telah berlalu lebih banyak waktu dari yang diharapkan — ini adalah sinyal masalah kinerja. Filter pada subsystem aplikasi Anda dengan level Default akan menampilkan semua kejadian kunci dengan presisi milidetik.
Mencari kebocoran memori: saat kebocoran memori, sistem mengirim peringatan memori melalui os_log dengan kategori memory dan level Error. Di Console.app filter berdasarkan kata memory dan pilih subsystem Anda. Jika peringatan berulang setiap 5–10 detik — aplikasi secara aktif mengonsumsi memori. Selain itu, Anda dapat mengaktifkan log Debug untuk melacak alokasi.
Debugging permintaan jaringan: jika aplikasi Anda menggunakan os_log untuk kejadian jaringan, Console.app akan menampilkan semua permintaan dan respons dengan waktu. Filter category=network mengurangi kebisingan. Jika waktu antara permintaan dan respons melebihi harapan, cari pesan dengan level=Error — mereka akan menunjukkan timeout atau error DNS.
// Struktur untuk mengurai log JSON 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"
}
}
}
Pertanyaan yang Sering Diajukan
Console.app terletak di folder /Applications/Utilities/. Dapat dibuka melalui Spotlight (⌘Spasi → Console) atau melalui Finder → Program → Utilitas → Konsol. Ikon aplikasi adalah gelembung bicara bergaya dengan roda gigi.
os_log menyembunyikan string dan objek sebagai private secara default. Console.app menampilkannya sebagai <private> dalam mode produksi. Untuk melihat nilai sebenarnya, jalankan aplikasi dari Xcode atau aktifkan profil pengumpulan dengan level Debug untuk subsystem Anda.
Di panel samping Console.app, pilih subsystem Anda (com.example.app) di bagian Devices → perangkat Anda → Processes. Alternatif — masukkan nama proses di bidang pencarian dan pilih Process: YourApp dari daftar drop-down.
Secara default, macOS menyimpan log di .tracev3 selama 7–14 hari tergantung pada ruang disk yang tersedia. Saat kekurangan ruang, log tertua dihapus secara otomatis. Masa penyimpanan dapat ditingkatkan melalui sudo log config, tetapi ini tidak disarankan untuk mesin produksi.
Ya, hubungkan perangkat iOS ke Mac melalui USB, buka Xcode → Devices → pilih perangkat → Open Console. Console.app akan menampilkan log perangkat yang terhubung secara real-time. Untuk pengumpulan mandiri, gunakan log collect di terminal dengan flag --device.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga