A Console.app egy beépített macOS-alkalmazás a rendszer- és felhasználói naplók megtekintésére, szűrésére és elemzésére. Valós időben jeleníti meg az Apple unified logging rendszeréből (os_log) származó üzeneteket, lehetővé téve a fejlesztő számára, hogy Xcode csatlakoztatása nélkül lássa az összeomlásokat, hibákat és hibakeresési üzeneteket. A Apple Support szerint a Console.app támogatja a szűrést subsystem, category, súlyossági szint és folyamat szerint, valamint a naplók exportálását .logarchive formátumba a fejlesztőnek való átadáshoz. Ez nélkülözhetetlen eszköz a Mac-en jelentkező problémák diagnosztizálásához: a szűrők és a mentett keresések lehetővé teszik az alkalmazáshibák gyors megtalálását a rendszerüzenetek ezrei között.
Főbb pontok
A Console.app egy grafikus felület az Apple unified logging rendszeréhez. Lecserélte a régi Console alkalmazást (a macOS részeként), és hozzáférést biztosít az összes rendszer- és alkalmazásnaplóhoz, amelyeket az os_log, os_trace és syslog API-kon keresztül rögzítettek. A Console.app a /Applications/Utilities/ mappában érhető el bármely Mac-en.
Ellentétben az Xcode-dal, amely csak az IDE-ből elindított alkalmazás naplóit mutatja, a Console.app az összes folyamat naplóit egyidejűleg jeleníti meg a rendszeren. Ez lehetővé teszi az olyan problémák diagnosztizálását, amelyek csak az alkalmazás Xcode-on kívüli vagy háttérben történő indításakor jelentkeznek. A Console.app rendszernaplókat is mutat — kernel, launchd, WindowServer, ami hasznos az alacsony szintű problémák hibakereséséhez.
A Console.app nem igényel további eszközök telepítését vagy internetkapcsolatot. Az összes adat lokálisan tárolódik a .tracev3 adatbázisban, és az alkalmazás teljesen offline működik. Más Mac-ről vagy iOS-eszközről származó naplók megtekintéséhez a log collect parancsot kell használni, majd a .logarchive fájlt megnyitni a Console.app-ban.
A Console.app felülete három fő területből áll: oldalsó panel szűrőkkel, üzenettábla és a kiválasztott üzenet részletpanele. Az oldalsó panel a következő szakaszokat tartalmazza: Devices (elérhető naplóforrások), Reports (rendszerhiba-jelentések) és Saved Searches (mentett keresési lekérdezések).
Az üzenettábla a naplók listáját oszlopokkal jeleníti meg: Time (időbélyeg), Category (kategória), Level (súlyossági szint — színjelzés), Process (folyamat neve), Message (üzenet szövege). Bármely üzenetre kattintva megnyílik a részletpanel, ahol a subsystem, activity identifier, thread ID és a teljes szöveg formázással jelenik meg.
A Console.app színekkel emeli ki az üzeneteket: piros a Fault, sárga az Error, kék a Debug, szürke az Info számára. Az alapértelmezett üzenetek nincsenek kiemelve. Ez lehetővé teszi a naplófolyam vizuális áttekintését és a kritikus események azonnali észlelését.
// Naplók, amelyek megjelennek a Console.app-ban
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Ezek az üzenetek láthatók a Console.app-ban a „myapp“ szűrővel
Szűrés — a Console.app fő funkciója, amely a másodpercenkénti több ezer üzenetből álló adatfolyamot olvasható listává alakítja. A felső keresőmező AND feltételeket támogat: több szóközzel elválasztott szó csak az összes szót tartalmazó üzeneteket jeleníti meg. Például a myapp error megjeleníti a myapp alkalmazás összes naplóját Error szinttel.
Subsystem szűrő az oldalsó panelen lehetővé teszi egy vagy több subsystem kiválasztását. Ez a leggyorsabb módja egy adott alkalmazás naplóinak elkülönítésére a rendszerüzenetektől. Category szűrő a subsystem kiválasztása után érhető el — megjeleníti a kiválasztott alkalmazás által használt összes kategóriát. Level szűrő az üzeneteket súlyossági szint szerint korlátozza: csak hibák vagy csak hibakeresési üzenetek jeleníthetők meg.
| Szűrő típusa | Példa | Eredmény |
|---|---|---|
| Szöveg | crash payment | crash ÉS payment szavakat tartalmazó üzenetek |
| Subsystem | com.example.myapp | Csak a megadott alkalmazás naplói |
| Level | Error + Fault | Csak hibák és kritikus összeomlások |
| Category | network | network kategóriájú üzenetek |
| Idő | Utolsó 1 óra | Csak a kiválasztott intervallum üzenetei |
A Console.app keresőmezője támogatja a regex-et a REGEX:pattern konstrukción keresztül. Példa: REGEX:error.*tim(e|out) megtalálja az összes olyan üzenetet, amely „erroren“ szót és egy „tim“-vel kezdődő, „e“-vel vagy „out“-tal végződő szót tartalmaz. A regex csak a keresőmezőben működik, nem a subsystem vagy category szűrőkben.
Live — valós idejű mód, amelyben a Console.app az új üzeneteket a kernel körpufferében való megjelenésükkor jeleníti meg. Ez a mód alapértelmezetten aktív, és alkalmas egy futó alkalmazás hibakeresésére: elindítja az alkalmazást, és 1–5 másodperces késleltetéssel látja a naplóit. A Live gomb (vagy ⌘L) be- és kikapcsolja az adatfolyamot.
Historical — az archívum megtekintésének módja. A Console.app az összes üzenetet az elmúlt 7–14 napból (rendszerben konfigurálható) tárolja a .tracev3 adatbázisban. A Historical mód megnyitja ezt az archívumot, és lehetővé teszi a keresést bármilyen szűrővel, nem csak az aktuális adatfolyamban. Ez nélkülözhetetlen az éjszaka vagy a Mac-hez nem csatlakoztatott alkalmazásban felmerült problémák elemzéséhez.
A módok közötti váltás az eszköztár Live gombján keresztül történik. Amikor a Live ki van kapcsolva, a Console.app történeti adatokat jelenít meg. Ebben a módban az idővonalon a naptár vagy a ← → gombok segítségével lehet navigálni. A Historical adatok csak a lemezre mentett naplók számára érhetők el — a körpufferben felülírt üzenetek nem kerülnek az archívumba.
A Console.app támogatja a szűrt naplók exportálását több formátumban. File → Export → Save kiválasztja a formátumot: .logarchive (natív Apple formátum, tartalmazza az összes metaadatot), .txt (egyszerű szöveg oszlopokkal) és .json (strukturált adatok mezőkkel). Hibajelentéshez csatoláshoz használja a .logarchive-ot — bármely Mac-en megnyitható a Console.app-ban.
Exportálás iOS-eszközről: Xcode-on keresztül (Devices → Open Console) vagy a log collect --device --output ./archive.logarchive paranccsal a terminálban. A kapott .logarchive fájlt nyissa meg a Console.app-ban a Mac-en — a naplók a távoli eszközről származnak, de a szűrők és a keresés ugyanúgy működnek, mint a helyi naplókkal.
// iOS-eszköz naplóinak exportálása terminálon keresztül
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Példa: naplók exportálása az elmúlt órából
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Exportált naplók elemzése Swift-ben
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — az optimális formátum kollégának küldéshez vagy JIRA tickethez csatoláshoz. A fájl nem csak üzeneteket, hanem subsystem, category, timestamps, thread ID-ket és az összes metaadatot is tartalmazza. Az archívum mérete jelentősen kisebb, mint a nyers naplóké a .tracev3 tömörítésének köszönhetően. Küldés előtt győződjön meg arról, hogy a naplók nem tartalmaznak privát adatokat: használja az alkalmazása subsystem szűrőjét a rendszernaplók kizárásához, amelyek más folyamatok bizalmas információit tartalmazhatják.
Összeomlás diagnosztizálása Xcode nélkül: ha az alkalmazás az Xcode-on kívüli indításkor összeomlott, a Console.app Fault üzenetet jelenít meg a folyamattól. Keresse meg az oldalsó panelen a Reports → Crash Reports részt — ott teljes összeomlási jelentések jelennek meg aláírással és veremmel. Használja az alkalmazása subsystem szűrőjét, és állítsa be az Error+Fault szintet, hogy lássa az összes kritikus eseményt az összeomlás előtt.
A Console.app lehetővé teszi az alkalmazás késleltetéseinek nyomon követését időbélyegek alapján. Ha két kapcsolódó üzenet között (például „Kérelem elküldve“ és „Válasz megérkezett“) a vártnál több idő telt el — ez teljesítményprobléma jele. Az alkalmazása subsystem szűrője Default szinttel megjeleníti az összes kulcsfontosságú eseményt ezredmásodperces pontossággal.
Memóriaszivárgás keresése: memóriaszivárgáskor a rendszer memóriafigyelmeztetést küld az os_log-on keresztül memory kategóriával és Error szinttel. A Console.app-ban szűrjön a memory szóra, és válassza ki a saját subsystem-jét. Ha a figyelmeztetés 5–10 másodpercenként ismétlődik — az alkalmazás aktívan fogyaszt memóriát. Ezenkívül bekapcsolhatja a Debug naplókat a foglalások nyomon követéséhez.
Hálózati kérések hibakeresése: ha az alkalmazása os_log-ot használ hálózati eseményekhez, a Console.app megjeleníti az összes kérést és választ időzítéssel. A category=network szűrő csökkenti a zajt. Ha a kérés és válasz közötti idő meghaladja a vártat, keressen level=Error üzeneteket — ezek időtúllépésekre vagy DNS-hibákra utalnak.
// Struktúra a Console.app JSON naplóinak elemzéséhez
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"
}
}
}
Gyakran Ismételt Kérdések
A Console.app a /Applications/Utilities/ mappában található. Megnyitható a Spotlighton keresztül (⌘Szóköz → Console) vagy a Finder → Programok → Segédprogramok → Konzol útvonalon. Az alkalmazás ikonja egy stilizált beszédbuborék fogaskerékkel.
Az os_log alapértelmezés szerint privátként maszkolja a karakterláncokat és objektumokat. A Console.app ezeket <private>-ként jeleníti meg éles módban. A valós értékek megtekintéséhez indítsa el az alkalmazást az Xcode-ból, vagy kapcsoljon be egy Debug szintű gyűjtőprofilt a saját subsystem-jéhez.
A Console.app oldalsó paneljén válassza ki a saját subsystem-jét (com.example.app) a Devices → az Ön eszköze → Processes szakaszban. Alternatív megoldásként — írja be a folyamat nevét a keresőmezőbe, és válassza a Process: YourApp lehetőséget a legördülő listából.
Alapértelmezés szerint a macOS 7–14 napig tárolja a naplókat a .tracev3-ban a rendelkezésre álló lemezterülettől függően. Helyhiány esetén a legrégebbi naplók automatikusan törlődnek. A tárolási idő meghosszabbítható a sudo log config segítségével, de ez nem ajánlott éles gépeken.
Igen, csatlakoztassa az iOS-eszközt a Mac-hez USB-n keresztül, nyissa meg az Xcode → Devices → válassza ki az eszközt → Open Console menüpontot. A Console.app valós időben jeleníti meg a csatlakoztatott eszköz naplóit. Önálló gyűjtéshez használja a log collect parancsot a terminálban a --device jelzővel.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is