Console.app är en inbyggd macOS-applikation för att visa, filtrera och analysera system- och användarloggar. Den visar meddelanden från Apples unified logging-system (os_log) i realtid, vilket gör att utvecklaren kan se krascher, fel och felsökningsmeddelanden utan att ansluta till Xcode. Enligt Apple Support stöder Console.app filtrering efter subsystem, category, allvarlighetsgrad och process, samt export av loggar till .logarchive för överföring till utvecklaren. Det är ett oumbärligt verktyg för att diagnostisera problem på Mac: filter och sparade sökningar gör det möjligt att snabbt hitta fel i applikationen bland tusentals systemmeddelanden.
Huvudpunkter
Console.app är ett grafiskt gränssnitt till Apples unified logging-system. Den ersatte den gamla Console-applikationen (som en del av macOS) och ger tillgång till alla system- och applikationsloggar som registrerats via API:erna os_log, os_trace och syslog. Console.app finns i /Applications/Utilities/ på alla Mac-datorer.
Till skillnad från Xcode, som bara visar loggar för applikationen som startats från IDE, visar Console.app loggar för alla processer i systemet samtidigt. Detta gör det möjligt att diagnostisera problem som uppstår endast när applikationen startas utanför Xcode eller i bakgrunden. Console.app visar även systemloggar — kernel, launchd, WindowServer, vilket är användbart för felsökning av lågnivåproblem.
Console.app kräver ingen installation av ytterligare verktyg eller internetanslutning. All data lagras lokalt i .tracev3-databasen och applikationen fungerar helt offline. För att visa loggar från en annan Mac eller iOS-enhet används kommandot log collect följt av att öppna .logarchive i Console.app.
Gränssnittet i Console.app består av tre huvudområden: sidopanelen med filter, meddelandetabellen och informationspanelen för det valda meddelandet. Sidopanelen innehåller avsnitten Devices (tillgängliga loggkällor), Reports (systemrapporter om krascher) och Saved Searches (sparade sökfrågor).
Meddelandetabellen visar en lista med loggar med kolumner: Time (tidsstämpel), Category (kategori), Level (allvarlighetsgrad — färgindikering), Process (processnamn), Message (meddelandetext). Klicka på ett meddelande för att öppna informationspanelen, där subsystem, activity identifier, thread ID och fullständig text med formatering visas.
Console.app markerar meddelanden med färg: rött för Fault, gult för Error, blått för Debug, grått för Info. Standardmeddelanden markeras inte. Detta gör det möjligt att visuellt skanna loggströmmen och omedelbart upptäcka kritiska händelser.
// Loggar som visas i 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")
// Dessa meddelanden syns i Console.app med filtret “myapp”
Filtrering — huvudfunktionen i Console.app, som omvandlar en ström av tusentals meddelanden per sekund till en läsbar lista. Sökfältet högst upp stöder AND-villkor: flera ord separerade med mellanslag visar endast meddelanden som innehåller alla ord. Till exempel visar myapp error alla loggar för applikationen myapp med nivån Error.
Subsystem-filter i sidopanelen gör det möjligt att välja ett eller flera subsystem. Detta är det snabbaste sättet att isolera loggar för en specifik applikation från systemmeddelanden. Category-filter är tillgängligt efter val av subsystem — det visar alla kategorier som används av den valda applikationen. Level-filter begränsar meddelanden efter allvarlighetsgrad: endast fel eller endast felsökningsmeddelanden kan visas.
| Filtertyp | Exempel | Resultat |
|---|---|---|
| Text | crash payment | Meddelanden som innehåller crash OCH payment |
| Subsystem | com.example.myapp | Endast loggar för angiven applikation |
| Level | Error + Fault | Endast fel och kritiska krascher |
| Category | network | Meddelanden med kategori network |
| Tid | Senaste 1 timmen | Meddelanden endast från valt intervall |
Sökfältet i Console.app stöder regex via konstruktionen REGEX:pattern. Exempel: REGEX:error.*tim(e|out) hittar alla meddelanden som innehåller “error” och ett ord som börjar med “tim” och slutar med “e” eller “out”. Regex fungerar endast i sökfältet, inte i subsystem- eller category-filter.
Live — realtidsläget, där Console.app visar nya meddelanden när de dyker upp i kärnans cirkulära buffert. Detta läge är aktivt som standard och lämpligt för felsökning av en körbar applikation: du startar applikationen och ser dess loggar med en fördröjning på 1–5 sekunder. Live-knappen (eller ⌘L) slår på och av strömmen.
Historical — läget för att visa arkivet. Console.app lagrar alla meddelanden från de senaste 7–14 dagarna (konfigurerbart i systemet) i .tracev3-databasen. Historical-läget öppnar detta arkiv och gör det möjligt att söka med valfria filter, inte bara den aktuella strömmen. Detta är oumbärligt för analys av problem som inträffade på natten eller när applikationen arbetade utan anslutning till Mac.
Växling mellan lägen sker via Live-knappen i verktygsfältet. När Live är avstängd visar Console.app historiska data. I detta läge kan du navigera på tidslinjen med hjälp av kalendern eller ← →-knapparna. Historiska data är endast tillgängliga för loggar som sparats på disken — meddelanden som skrivits över i den cirkulära bufferten hamnar inte i arkivet.
Console.app stöder export av filtrerade loggar i flera format. File → Export → Save väljer format: .logarchive (inbyggt Apple-format, inkluderar all metadata), .txt (ren text med kolumner) och .json (strukturerad data med fält). För bifogning till felrapport använd .logarchive — den kan öppnas på vilken Mac som helst i Console.app.
Export från iOS-enhet: via Xcode (Devices → Open Console) eller via kommandot log collect --device --output ./archive.logarchive i terminalen. Öppna den erhållna .logarchive i Console.app på Mac — loggarna kommer från fjärrenheten, men filter och sökning fungerar på samma sätt som med lokala loggar.
// Export av iOS-enhetsloggar via terminal
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json
// Exempel: exportera loggar från den senaste timmen
// log show --predicate 'subsystem == "com.example.myapp"' \
// --info --debug --last 1h --output json > logs.json
// Tolkning av exporterade loggar i Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
.decode([LogEntry].self, from: jsonData)
.logarchive — det optimala formatet för att skicka till en kollega eller bifoga till en JIRA-biljett. Filen innehåller inte bara meddelanden, utan även subsystem, category, timestamps, thread ID och all metadata. Arkivets storlek är betydligt mindre än råa loggar tack vare .tracev3-komprimering. Före sändning, kontrollera att loggarna inte innehåller privata data: använd applikationens subsystem-filter för att utesluta systemloggar som kan innehålla konfidentiell information från andra processer.
Diagnostisera krasch utan Xcode: om applikationen kraschade vid start utanför Xcode visar Console.app ett Fault-meddelande från processen. Hitta i sidopanelen Reports → Crash Reports — där visas fullständiga kraschrapporter med signatur och stack. Använd subsystem-filter för din applikation och ställ in nivån Error+Fault för att se alla kritiska händelser före kraschen.
Console.app gör det möjligt att spåra fördröjningar i applikationen baserat på tidsstämplar. Om det mellan två relaterade meddelanden (till exempel “Begäran skickad” och “Svar mottaget”) har gått mer tid än förväntat — detta är en signal om prestandaproblem. Filtret på din applikations subsystem med nivån Default visar alla viktiga händelser med millisekundprecision.
Sökning efter minnesläcka: vid minnesläcka skickar systemet en minnesvarning via os_log med kategorin memory och nivån Error. I Console.app filtrera på ordet memory och välj ditt subsystem. Om varningen upprepas var 5–10:e sekund — förbrukar applikationen aktivt minne. Dessutom kan Debug-loggar aktiveras för att spåra allokeringar.
Felsökning av nätverksbegäranden: om din applikation använder os_log för nätverkshändelser visar Console.app alla begäranden och svar med tidsangivelser. Filtret category=network minskar brus. Om tiden mellan begäran och svar överstiger förväntningarna, sök efter meddelanden med level=Error — de indikerar timeout eller DNS-fel.
// Struktur för tolkning av JSON-loggar från 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"
}
}
}
Vanliga frågor
Console.app finns i mappen /Applications/Utilities/. Den kan öppnas via Spotlight (⌘Mellanslag → Console) eller via Finder → Program → Verktyg → Konsol. Applikationens ikon är en stiliserad pratbubbla med ett kugghjul.
os_log maskerar strängar och objekt som private som standard. Console.app visar dem som <private> i produktionsläge. För att se verkliga värden, starta applikationen från Xcode eller aktivera en insamlingsprofil med Debug-nivå för ditt subsystem.
I sidopanelen i Console.app, välj ditt subsystem (com.example.app) i avsnittet Devices → din enhet → Processes. Alternativt — skriv processnamnet i sökfältet och välj Process: YourApp från rullgardinslistan.
Som standard sparar macOS loggar i .tracev3 i 7–14 dagar beroende på tillgängligt diskutrymme. Vid brist på utrymme tas de äldsta loggarna bort automatiskt. Lagringstiden kan förlängas via sudo log config, men detta rekommenderas inte för produktionsmaskiner.
Ja, anslut iOS-enheten till Mac via USB, öppna Xcode → Devices → välj enheten → Open Console. Console.app visar loggarna från den anslutna enheten i realtid. För fristående insamling använd log collect i terminalen med flaggan --device.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också