Console.app is een ingebouwde macOS-applicatie voor het bekijken, filteren en analyseren van systeem- en gebruikerslogs. Het toont berichten van Apple’s unified logging systeem (os_log) in realtime, waarmee de ontwikkelaar crashes, fouten en debugberichten kan zien zonder verbinding met Xcode. Volgens Apple Support ondersteunt Console.app filtering op subsystem, category, ernstniveau en proces, evenals export van logs naar .logarchive voor overdracht aan de ontwikkelaar. Het is een onmisbaar hulpmiddel voor het diagnosticeren van problemen op Mac: filters en opgeslagen zoekopdrachten maken het mogelijk om snel fouten in de applicatie te vinden te midden van duizenden systeemberichten.
Belangrijkste punten
Console.app is een grafische interface voor Apple’s unified logging systeem. Het heeft de oude Console-applicatie vervangen (als onderdeel van macOS) en biedt toegang tot alle systeem- en applicatielogs die zijn vastgelegd via de API’s os_log, os_trace en syslog. Console.app is beschikbaar in /Applications/Utilities/ op elke Mac.
In tegenstelling tot Xcode, dat alleen logs toont van de vanuit de IDE gestarte applicatie, geeft Console.app logs van alle processen op het systeem tegelijkertijd weer. Dit maakt het mogelijk om problemen te diagnosticeren die alleen optreden bij het starten van de applicatie buiten Xcode of op de achtergrond. Console.app toont ook systeemlogs — kernel, launchd, WindowServer, wat nuttig is voor het debuggen van low-level problemen.
Console.app vereist geen installatie van extra hulpmiddelen of internetverbinding. Alle gegevens worden lokaal opgeslagen in de .tracev3-database en de applicatie werkt volledig offline. Voor het bekijken van logs van een andere Mac of iOS-apparaat wordt de opdracht log collect gebruikt, waarna .logarchive wordt geopend in Console.app.
De interface van Console.app bestaat uit drie hoofdgebieden: het zijpaneel met filters, de berichtentabel en het detailpaneel van het geselecteerde bericht. Het zijpaneel bevat de secties Devices (beschikbare logbronnen), Reports (systeemrapporten over crashes) en Saved Searches (opgeslagen zoekopdrachten).
De berichtentabel toont een lijst met logs met kolommen: Time (tijdstempel), Category (categorie), Level (ernstniveau — kleurindicatie), Process (procesnaam), Message (berichttekst). Klik op een willekeurig bericht opent het detailpaneel, waar subsystem, activity identifier, thread ID en de volledige tekst met opmaak worden weergegeven.
Console.app markeert berichten met kleur: rood voor Fault, geel voor Error, blauw voor Debug, grijs voor Info. Standaardberichten worden niet gemarkeerd. Dit maakt het mogelijk om de logstroom visueel te scannen en direct kritieke gebeurtenissen op te merken.
// Logs die in Console.app verschijnen
import OSLog
let logger = Logger(
subsystem: "com.example.myapp",
category: "network"
)
logger.error("Connection failed: timeout")
logger.debug("Retry attempt 3 of 5")
// Deze berichten zijn zichtbaar in Console.app met filter „myapp“
Filtering — de hoofdfunctie van Console.app, die een stroom van duizenden berichten per seconde omzet in een leesbare lijst. Het zoekveld bovenaan ondersteunt AND-voorwaarden: meerdere woorden gescheiden door spaties tonen alleen berichten die alle woorden bevatten. Bijvoorbeeld myapp error toont alle logs van de applicatie myapp met niveau Error.
Subsystem-filter in het zijpaneel maakt het mogelijk om een of meerdere subsystemen te selecteren. Dit is de snelste manier om logs van een specifieke applicatie te isoleren van systeemberichten. Category-filter is beschikbaar na selectie van het subsystem — het toont alle categorieën die door de geselecteerde applicatie worden gebruikt. Level-filter beperkt berichten op ernstniveau: alleen fouten of alleen debugberichten kunnen worden getoond.
| Filtertype | Voorbeeld | Resultaat |
|---|---|---|
| Tekst | crash payment | Berichten die crash EN payment bevatten |
| Subsystem | com.example.myapp | Alleen logs van de opgegeven applicatie |
| Level | Error + Fault | Alleen fouten en kritieke crashes |
| Category | network | Berichten met categorie network |
| Tijd | Laatste 1 uur | Berichten alleen uit geselecteerd interval |
Het zoekveld van Console.app ondersteunt regex via de constructie REGEX:pattern. Voorbeeld: REGEX:error.*tim(e|out) vindt alle berichten die „erroren“ bevatten en een woord dat begint met „tim“ en eindigt op „e“ of „out“. Regex werkt alleen in het zoekveld, niet in subsystem- of category-filters.
Live — de realtime modus, waarin Console.app nieuwe berichten toont zodra ze verschijnen in de circulaire buffer van de kernel. Deze modus is standaard actief en geschikt voor het debuggen van een actieve applicatie: u start de applicatie en ziet de logs met een vertraging van 1–5 seconden. De Live-knop (of ⌘L) schakelt de stroom in en uit.
Historical — de modus voor het bekijken van het archief. Console.app bewaart alle berichten van de afgelopen 7–14 dagen (instelbaar in het systeem) in de .tracev3-database. De Historical-modus opent dit archief en maakt zoeken met elk filter mogelijk, niet alleen de huidige stroom. Dit is onmisbaar voor het analyseren van problemen die ’s nachts zijn opgetreden of wanneer de applicatie zonder verbinding met de Mac werkte.
Het schakelen tussen modi gebeurt via de Live-knop op de werkbalk. Wanneer Live is uitgeschakeld, toont Console.app historische gegevens. In deze modus kan door de tijdlijn worden genavigeerd met behulp van de kalender of de ← →-knoppen. Historical-gegevens zijn alleen beschikbaar voor logs die op schijf zijn opgeslagen — berichten die zijn overschreven in de circulaire buffer komen niet in het archief.
Console.app ondersteunt export van gefilterde logs in verschillende formaten. File → Export → Save selecteert het formaat: .logarchive (native Apple-formaat, inclusief alle metadata), .txt (platte tekst met kolommen) en .json (gestructureerde gegevens met velden). Voor het bijvoegen bij een bugrapport gebruikt u .logarchive — het kan op elke Mac in Console.app worden geopend.
Export van iOS-apparaat: via Xcode (Devices → Open Console) of via de opdracht log collect --device --output ./archive.logarchive in de terminal. Het verkregen .logarchive opent u in Console.app op de Mac — de logs zijn afkomstig van het externe apparaat, maar de filters en zoekopdrachten werken hetzelfde als met lokale logs.
// Export van logs van iOS-apparaat via terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Voorbeeld: logs van het afgelopen uur exporteren
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Parsen van geëxporteerde logs in Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — het optimale formaat voor verzending aan een collega of bijvoegen bij een JIRA-ticket. Het bestand bevat niet alleen berichten, maar ook subsystem, category, timestamps, thread IDs en alle metadata. De grootte van het archief is aanzienlijk kleiner dan ruwe logs dankzij .tracev3-compressie. Controleer vóór verzending of de logs geen privégegevens bevatten: gebruik het subsystem-filter van uw applicatie om systeemlogs uit te sluiten die vertrouwelijke informatie van andere processen kunnen bevatten.
Diagnose van een crash zonder Xcode: als de applicatie is gecrasht bij het starten buiten Xcode, toont Console.app een Fault-bericht van het proces. Zoek in het zijpaneel Reports → Crash Reports — daar worden volledige crashrapporten met handtekening en stack weergegeven. Gebruik het subsystem-filter voor uw applicatie en stel het niveau Error+Fault in om alle kritieke gebeurtenissen voor de crash te zien.
Console.app maakt het mogelijk om vertragingen in de applicatie te volgen op basis van tijdstempels. Als er tussen twee gerelateerde berichten (bijvoorbeeld „verzoek verzonden“ en „antwoord ontvangen“) meer tijd is verstreken dan verwacht — dit is een signaal van een prestatieprobleem. Het filter op subsystem van uw applicatie met niveau Default toont alle belangrijke gebeurtenissen met millisecondeprecisie.
Geheugenlek zoeken: bij een geheugenlek stuurt het systeem een geheugenwaarschuwing via os_log met categorie memory en niveau Error. Filter in Console.app op het woord memory en selecteer uw subsystem. Als de waarschuwing elke 5–10 seconden wordt herhaald — verbruikt de applicatie actief geheugen. Aanvullend kunnen Debug-logs worden ingeschakeld voor het volgen van allocaties.
Debuggen van netwerkverzoeken: als uw applicatie os_log gebruikt voor netwerkgebeurtenissen, toont Console.app alle verzoeken en antwoorden met timing. Het filter category=network vermindert ruis. Als de tijd tussen verzoek en antwoord de verwachting overtreft, zoek dan naar berichten met level=Error — deze wijzen op time-outs of DNS-fouten.
// Structuur voor het parsen van JSON-logs van 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"
}
}
}
Veelgestelde vragen
Console.app bevindt zich in de map /Applications/Utilities/. Het kan worden geopend via Spotlight (⌘Spatie → Console) of via Finder → Programma’s → Hulpprogramma’s → Console. Het pictogram van de applicatie is een gestileerde spraakballon met een tandwiel.
os_log maskeert strings en objecten standaard als private. Console.app toont ze als <private> in de productiemodus. Om de werkelijke waarden te zien, start u de applicatie vanuit Xcode of schakelt u een verzamelprofiel met Debug-niveau in voor uw subsystem.
Selecteer in het zijpaneel van Console.app uw subsystem (com.example.app) in de sectie Devices → uw apparaat → Processes. Alternatief — voer de procesnaam in het zoekveld in en selecteer Process: YourApp uit de vervolgkeuzelijst.
Standaard bewaart macOS logs in .tracev3 gedurende 7–14 dagen, afhankelijk van de beschikbare schijfruimte. Bij ruimtegebrek worden de oudste logs automatisch verwijderd. De bewaartermijn kan worden verlengd via sudo log config, maar dit wordt niet aanbevolen voor productiemachines.
Ja, sluit het iOS-apparaat aan op de Mac via USB, open Xcode → Devices → selecteer het apparaat → Open Console. Console.app toont de logs van het aangesloten apparaat in realtime. Voor zelfstandige verzameling gebruikt u log collect in de terminal met de vlag --device.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook