Console.app macOS üçün daxili tətbiqdir, sistem və istifadəçi loglarına baxmaq, filtrləmək və təhlil etmək üçün nəzərdə tutulub. Apple-ın unified logging sistemi (os_log) vasitəsilə real vaxtda mesajları göstərir, tərtibatçıya Xcode-a qoşulmadan kraşları, səhvləri və debug mesajlarını görməyə imkan verir. Apple Support-a görə, Console.app subsystem, category, kritiklik səviyyəsi və proses üzrə filtrləməni, həmçinin logların .logarchive formatında ixracını dəstəkləyir. Bu, Mac-da problemlərin diaqnostikası üçün əvəzolunmaz alətdir: filtrlər və saxlanmış axtarışlar minlərlə sistem mesajı arasında tətbiqdə səhvləri tez tapmağa imkan verir.
Əsas məqamlar
Console.app Apple-ın unified logging sisteminə qrafik interfeysdir. O, köhnə Console tətbiqini əvəz etdi (macOS-un bir hissəsi kimi) və os_log, os_trace və syslog API-ləri vasitəsilə yazılmış bütün sistem və tətbiq loglarına girişi təmin edir. Console.app hər Mac-da /Applications/Utilities/ ünvanında mövcuddur.
Xcode-dan fərqli olaraq, IDE-dən işə salınmış tətbiq üçün yalnız logları göstərir, Console.app eyni anda sistemdəki bütün proseslərin loglarını göstərir. Bu, tətbiq Xcode xaricində və ya fon rejimində işə salındıqda yaranan problemləri diaqnoz etməyə imkan verir. Console.app həmçinin sistem loglarını — kernel, launchd, WindowServer göstərir ki, bu da aşağı səviyyəli problemlərin debugu üçün faydalıdır.
Console.app əlavə alətlərin quraşdırılmasını və ya internetə qoşulmanı tələb etmir. Bütün məlumatlar .tracev3 verilənlər bazasında lokal saxlanılır və tətbiq tamamilə oflayn işləyir. Digər Mac və ya iOS cihazından loglara baxmaq üçün log collect əmrindən istifadə olunur, sonra .logarchive Console.app-də açılır.
Console.app interfeysi üç əsas sahədən ibarətdir: filtrlərlə yan panel, mesaj cədvəli və seçilmiş mesajın təfərrüat paneli. Yan paneldə Devices (mövcud log mənbələri), Reports (sistem nasazlıq hesabatları) və Saved Searches (saxlanmış axtarış sorğuları) bölmələri var.
Mesaj cədvəli logların siyahısını sütunlarla göstərir: Time (vaxt damğası), Category (kateqoriya), Level (kritiklik səviyyəsi — rəng göstəricisi), Process (proses adı), Message (mesaj mətni). Hər hansı mesaja klik təfərrüat panelini açır, burada subsystem, activity identifier, thread ID və formatlaşdırma ilə tam mətn göstərilir.
Console.app mesajları rənglə vurğulayır: Fault üçün qırmızı, Error üçün sarı, Debug üçün göy, Info üçün boz. Default mesajları vurğulanmır. Bu, log axınını vizual skan etməyə və kritik hadisələri dərhal görməyə imkan verir.
// Console.app-də görünəcək loglar
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Bu mesajlar Console.app-də "myapp" filtri ilə görünür
Filtrləmə — Console.app-in əsas funksiyasıdır, saniyədə minlərlə mesaj axınını oxunaqlı siyahıya çevirir. Yuxarıdakı axtarış sahəsi AND şərtlərini dəstəkləyir: bir neçə söz boşluqla ayrılır və yalnız bütün sözləri ehtiva edən mesajlar göstərilir. Məsələn, myapp error myapp tətbiqinin Error səviyyəli bütün loglarını göstərəcək.
Subsystem filtri yan paneldə bir və ya bir neçə subsystem seçməyə imkan verir. Bu, konkret tətbiqin loglarını sistem mesajlarından təcrid etməyin ən sürətli yoludur. Category filtri subsystem seçildikdən sonra əlçatan olur — seçilmiş tətbiqin istifadə etdiyi bütün kateqoriyaları göstərir. Level filtri mesajları kritiklik səviyyəsinə görə məhdudlaşdırır: yalnız səhvləri və ya yalnız debug mesajlarını göstərmək olar.
| Filter növü | Nümunə | Nəticə |
|---|---|---|
| Mətn | crash payment | crash VƏ payment sözlərini ehtiva edən mesajlar |
| Subsystem | com.example.myapp | Yalnız göstərilən tətbiqin logları |
| Level | Error + Fault | Yalnız səhvlər və kritik nasazlıqlar |
| Category | network | network kateqoriyası olan mesajlar |
| Vaxt | Son 1 saat | Yalnız seçilmiş intervaldakı mesajlar |
Console.app axtarış sahəsi REGEX:pattern konstruksiyası vasitəsilə regex dəstəkləyir. Nümunə: REGEX:error.*tim(e|out) “error” və “tim” ilə başlayıb “e” və ya “out” ilə bitən sözü olan bütün mesajları tapacaq. Regex yalnız axtarış sahəsində işləyir, subsystem və ya category filtrlərində deyil.
Live — real-vaxt rejimi, Console.app nüvənin dairəvi buferində yeni mesajlar göründükcə onları göstərir. Bu rejim standart olaraq aktivdir və işləyən tətbiqin debugu üçün uyğundur: tətbiqi işə salırsınız və onun loglarını 1–5 saniyə gecikmə ilə görürsünüz. Live düyməsi (və ya ⌘L) axını yandırıb söndürür.
Historical — arxivə baxış rejimi. Console.app bütün mesajları son 7–14 gün (sistemdə konfiqurasiya olunur) ərzində .tracev3 verilənlər bazasında saxlayır. Historical rejimi bu arxivi açır və yalnız cari axınla deyil, istənilən filtrlə axtarışa imkan verir. Bu, gecə və ya Mac-a qoşulmadan işləyən tətbiqdə baş verən problemlərin təhlili üçün əvəzolunmazdır.
Rejimlər arasında keçid alətlər panelindəki Live düyməsi ilə həyata keçirilir. Live söndürüldükdə Console.app tarixi məlumatları göstərir. Bu rejimdə təqvim və ya ← → düymələri ilə zaman xətti boyunca hərəkət etmək olar. Historical məlumatlar yalnız diskə yazılmış loglar üçün mövcuddur — dairəvi buferdə üzərinə yazılmış mesajlar arxivə düşmür.
Console.app filtrlənmiş logların bir neçə formatda ixracını dəstəkləyir. File → Export → Save formatı seçir: .logarchive (Apple-ın doğma formatı, bütün metadatanı ehtiva edir), .txt (sütunlarla sadə mətn) və .json (sahələrlə strukturlaşdırılmış məlumat). Bug-reporta əlavə etmək üçün .logarchive istifadə edin — onu istənilən Mac-da Console.app-də açmaq olar.
iOS cihazından ixrac: Xcode (Devices → Open Console) və ya terminalda log collect --device --output ./archive.logarchive əmri ilə. Alınan .logarchive Mac-da Console.app-də açın — loglar uzaq cihazdandır, lakin filtrlər və axtarış lokal loglarla eyni işləyir.
// iOS cihazının loglarının terminal vasitəsilə ixracı
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Nümunə: son bir saatın loglarını çıxarmaq
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// İxrac edilmiş logların Swift-də pars edilməsi
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — həmkarına göndərmək və ya JIRA tapşırığına əlavə etmək üçün optimal format. Fayl yalnız mesajları deyil, həm də subsystem, category, timestamps, thread IDs və bütün metadatanı ehtiva edir. Arxivin ölçüsü .tracev3 sıxlaşdırması sayəsində xam loglardan əhəmiyyətli dərəcədə kiçikdir. Göndərməzdən əvvəl loglarda şəxsi məlumatların olmadığına əmin olun: digər proseslərin məxfi məlumatlarını ehtiva edə bilən sistem loglarını istisna etmək üçün tətbiqinizin subsystem filtirindən istifadə edin.
Xcode olmadan kraşın diaqnostikası: tətbiq Xcode xaricində işə salındıqda çökərsə, Console.app prosesdən Fault mesajı göstərəcək. Yan paneldə Reports → Crash Reports bölməsini tapın — orada imza və stack ilə tam nasazlıq hesabatları göstərilir. Tətbiqiniz üçün subsystem filtrindən istifadə edin və kraşdan əvvəl bütün kritik hadisələri görmək üçün Error+Fault səviyyəsini təyin edin.
Console.app vaxt damğalarına əsasən tətbiqdə gecikmələri izləməyə imkan verir. Əgər iki əlaqəli mesaj arasında (məsələn, “sorğu göndərildi” və “cavab alındı”) gözləniləndən çox vaxt keçibsə — bu performans problemi siqnalıdır. Default səviyyəli tətbiqinizin subsystem filtrindən istifadə edərək bütün əsas hadisələri millisaniyə dəqiqliyi ilə göstərəcək.
Yaddaş sızmasının axtarışı: yaddaş sızması zamanı sistem os_log vasitəsilə memory kateqoriyası və Error səviyyəsi ilə xəbərdarlıq göndərir. Console.app-də memory sözünə görə filtrləyin və öz subsysteminizi seçin. Xəbərdarlıq hər 5–10 saniyədən bir təkrarlanırsa — tətbiq aktiv şəkildə yaddaş istehlak edir. Əlavə olaraq alokasiyaları izləmək üçün Debug loglarını aktivləşdirmək olar.
Şəbəkə sorğularının debugu: tətbiqiniz şəbəkə hadisələri üçün os_log istifadə edirsə, Console.app bütün sorğuları və cavabları vaxtla göstərəcək. category=network filtri səs-küyü azaldacaq. Sorğu və cavab arasında vaxt gözləniləndən çox olarsa, level=Error olan mesajları axtarın — onlar timeout və ya DNS səhvlərini göstərəcək.
// Console.app JSON loglarının pars edilməsi üçün struktur
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"
}
}
}
Tez-tez verilən suallar
Console.app /Applications/Utilities/ qovluğunda yerləşir. Onu Spotlight (⌘Boşluq → Console) və ya Finder → Proqramlar → Utilities → Konsol vasitəsilə açmaq olar. Tətbiqin ikonu — dişli çarxlı stilizə edilmiş nitq balonudur.
os_log sətirləri və obyektləri standart olaraq private kimi maskalayır. Console.app onları production rejimində <private> kimi göstərir. Həqiqi dəyərləri görmək üçün tətbiqi Xcode-dan işə salın və ya subsysteminiz üçün Debug səviyyəli toplama profilini aktivləşdirin.
Console.app-in yan panelində Devices → cihazınız → Processes bölməsində öz subsysteminizi (com.example.app) seçin. Alternativ olaraq axtarış sahəsinə proses adını yazın və açılan siyahıdan Process: YourApp seçin.
Standart olaraq macOS logları .tracev3-də 7–14 gün ərzində disk sahəsindən asılı olaraq saxlayır. Yer çatışmazlığı olduqda ən köhnə loglar avtomatik silinir. Saxlama müddətini sudo log config vasitəsilə artırmaq olar, lakin bu, production maşınları üçün tövsiyə edilmir.
Bəli, iOS cihazını USB ilə Mac-a qoşun, Xcode → Devices → cihazı seçin → Open Console açın. Console.app qoşulmuş cihazın loglarını real vaxtda göstərəcək. Müstəqil toplama üçün terminalda log collect əmrindən --device flagı ilə istifadə edin.
Xülasə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun