Console.app: какво е, функции и как да четем логове в macOS

Автор: IT Sectr Публикувано: 2026-05-29 Време за четене: 8 мин

Console.app е вградено приложение на macOS за преглед, филтриране и анализ на системни и потребителски логове. Той показва съобщения от unified logging системата на Apple (os_log) в реално време, позволявайки на разработчика да вижда крашове, грешки и отладочни съобщения без свързване към Xcode. Според Apple Support, Console.app поддържа филтриране по subsystem, category, ниво на критичност и процес, както и експорт на логове в .logarchive за предаване на разработчика. Това е незаменим инструмент за диагностика на проблеми на Mac: филтрите и запазените търсения позволяват бързо намиране на грешки в приложението сред хиляди системни съобщения.

Основни точки

  • Console.app — вграден прегледач на логове на macOS, работещ с unified logging системата на Apple
  • Филтриране — търсене по subsystem, category, ниво (Error, Fault, Debug) и текст на съобщението с поддръжка на регулярни изрази
  • Режими — Live (поток в реално време) и Historical (архивни логове), превключване чрез лентата с инструменти
  • Експорт — запазване на логове в .logarchive, .txt и .json за предаване на разработчика или прикачване към доклад за грешка
  • Запазени търсения — именувани филтри за типични сценарии: всички грешки на приложението, мрежови логове, CrashReporter

Какво е Console.app

Console.app е графичен интерфейс към unified logging системата на Apple. Той замени старото приложение Console (като част от macOS) и предоставя достъп до всички системни логове и логове на приложения, записани чрез API-тата os_log, os_trace и syslog. Console.app е достъпен в /Applications/Utilities/ на всеки Mac.

За разлика от Xcode, който показва само логове на приложението, стартирано от IDE, Console.app показва логове на всички процеси в системата едновременно. Това позволява диагностициране на проблеми, които възникват само при стартиране на приложението извън Xcode или на фонов режим. Console.app също показва системни логове — kernel, launchd, WindowServer, което е полезно за отстраняване на ниско ниво проблеми.

Console.app не изисква инсталиране на допълнителни инструменти или интернет връзка. Всички данни се съхраняват локално в базата данни .tracev3 и приложението работи напълно офлайн. За преглед на логове от друг Mac или iOS устройство се използва командата log collect, последвана от отваряне на .logarchive в Console.app.

Интерфейс на Console.app

Интерфейсът на Console.app се състои от три основни области: страничен панел с филтри, таблица със съобщения и панел с детайли на избраното съобщение. Страничният панел съдържа разделите Devices (налични източници на логове), Reports (системни доклади за сривове) и Saved Searches (запазени заявки за търсене).

Таблицата със съобщения показва списък с логове с колони: Time (времеви отпечатък), Category (категория), Level (ниво на критичност — цветна индикация), Process (име на процеса), Message (текст на съобщението). Клик върху произволно съобщение отваря панела с детайли, където се показват subsystem, activity identifier, thread ID и пълният текст с форматиране.

Console.app подчертава съобщенията с цвят: червено за Fault, жълто за Error, синьо за Debug, сиво за Info. Съобщенията по подразбиране не се подчертават. Това позволява визуално сканиране на потока от логове и моментално забелязване на критични събития.

swift
// Логове, които ще се появят в 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")

// Тези съобщения се виждат в Console.app с филтър „myapp“

Филтри и търсене в Console.app

Филтриране — основната функция на Console.app, която превръща поток от хиляди съобщения в секунда в четим списък. Полето за търсене в горната част поддържа AND условия: няколко думи, разделени с интервал, показват само съобщения, съдържащи всички думи. Например myapp error ще покаже всички логове на приложението myapp с ниво Error.

Филтър Subsystem в страничния панел позволява избор на един или повече subsystem. Това е най-бързият начин за изолиране на логове на конкретно приложение от системни съобщения. Филтър Category е достъпен след избор на subsystem — показва всички категории, използвани от избраното приложение. Филтър Level ограничава съобщенията по ниво на критичност: могат да се показват само грешки или само отладочни съобщения.

Тип филтърПримерРезултат
Текстcrash paymentСъобщения, съдържащи crash И payment
Subsystemcom.example.myappСамо логове на посоченото приложение
LevelError + FaultСамо грешки и критични сривове
CategorynetworkСъобщения с категория network
ВремеПоследен 1 часСъобщения само от избран интервал

Регулярни изрази в търсенето

Полето за търсене на Console.app поддържа regex чрез конструкцията REGEX:pattern. Пример: REGEX:error.*tim(e|out) ще намери всички съобщения, съдържащи „erroren“ и дума, започваща с „tim“ и завършваща на „e“ или „out“. Regex работи само в полето за търсене, не във филтрите subsystem или category.

Режими Live и Historical

Live — режим на реално време, в който Console.app показва нови съобщения, когато се появят в цикличния буфер на ядрото. Този режим е активен по подразбиране и е подходящ за отстраняване на грешки в работещо приложение: стартирате приложението и виждате неговите логове със закъснение от 1–5 секунди. Бутонът Live (или ⌘L) включва и изключва потока.

Historical — режим на преглед на архива. Console.app съхранява всички съобщения от последните 7–14 дни (конфигурируемо в системата) в базата данни .tracev3. Historical режимът отваря този архив и позволява търсене по всякакви филтри, а не само по текущия поток. Това е незаменимо за анализ на проблеми, възникнали през нощта или когато приложението е работило без връзка с Mac.

Превключването между режимите става чрез бутона Live в лентата с инструменти. Когато Live е изключен, Console.app показва исторически данни. В този режим можете да навигирате по времевата линия с помощта на календара или бутоните ← →. Историческите данни са достъпни само за логове, запазени на диска — съобщения, които са били презаписани в цикличния буфер, не попадат в архива.

Експорт и споделяне на логове

Console.app поддържа експорт на филтрирани логове в няколко формата. File → Export → Save избира формата: .logarchive (роден формат на Apple, включва всички метаданни), .txt (обикновен текст с колони) и .json (структурирани данни с полета). За прикачване към доклад за грешка използвайте .logarchive — може да се отвори на всеки Mac в Console.app.

Експорт от iOS устройство: чрез Xcode (Devices → Open Console) или чрез командата log collect --device --output ./archive.logarchive в терминала. Полученият .logarchive отворете в Console.app на Mac — логовете са от отдалеченото устройство, но филтрите и търсенето работят същото като с локални логове.

swift
// Експорт на логове от iOS устройство чрез терминал
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json

// Пример: експорт на логове от последния час
// log show --predicate 'subsystem == "com.example.myapp"' \
//   --info --debug --last 1h --output json > logs.json

// Парсване на експортирани логове в Swift
let jsonData = try Data(contentsOf: URL(fileURLWithPath: "logs.json"))
let decoded = try JSONDecoder()
    .decode([LogEntry].self, from: jsonData)

Споделяне на логове

.logarchive — оптималният формат за изпращане на колега или прикачване към JIRA билет. Файлът съдържа не само съобщения, но и subsystem, category, timestamps, thread IDs и всички метаданни. Размерът на архива е значително по-малък от суровите логове благодарение на компресията .tracev3. Преди изпращане се уверете, че логовете не съдържат лични данни: използвайте филтъра subsystem на вашето приложение, за да изключите системни логове, които могат да съдържат поверителна информация на други процеси.

Практически примери за отстраняване на грешки чрез Console.app

Диагностика на срив без Xcode: ако приложението се е сриналo при стартиране извън Xcode, Console.app ще покаже Fault съобщение от процеса. Намерете в страничния панел Reports → Crash Reports — там се показват пълни доклади за сривове с подпис и стек. Използвайте филтъра subsystem за вашето приложение и задайте ниво Error+Fault, за да видите всички критични събития преди срива.

Анализ на производителност чрез Console.app

Console.app позволява проследяване на закъснения в приложението на базата на времеви отпечатъци. Ако между две свързани съобщения (например „Заявката е изпратена“ и „Отговорът е получен“) е изминало повече време от очакваното — това е сигнал за проблем с производителността. Филтърът по subsystem на вашето приложение с ниво Default ще покаже всички ключови събития с точност до милисекунда.

Търсене на изтичане на памет: при изтичане на памет системата изпраща предупреждение за памет чрез os_log с категория memory и ниво Error. В Console.app филтрирайте по думата memory и изберете вашия subsystem. Ако предупреждението се повтаря на всеки 5–10 секунди — приложението активно консумира памет. Допълнително можете да включите Debug логове за проследяване на алокации.

Отстраняване на грешки в мрежови заявки: ако вашето приложение използва os_log за мрежови събития, Console.app ще покаже всички заявки и отговори с времеви данни. Филтърът category=network намалява шума. Ако времето между заявка и отговор надвишава очакваното, търсете съобщения с level=Error — те ще посочат таймаути или DNS грешки.

swift
// Структура за парсване на 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"
        }
    }
}

Често задавани въпроси

Къде се намира Console.app на Mac?

Console.app се намира в папка /Applications/Utilities/. Може да се отвори чрез Spotlight (⌘Интервал → Console) или чрез Finder → Програми → Помощни програми → Конзола. Иконата на приложението е стилизиран балон за говор с зъбно колело.

Защо Console.app показва <private> вместо стойности?

os_log маскира низове и обекти като private по подразбиране. Console.app ги показва като <private> в продукционен режим. За да видите реалните стойности, стартирайте приложението от Xcode или включете профил за събиране с ниво Debug за вашия subsystem.

Как да филтрирам само логовете на моето приложение?

В страничния панел на Console.app изберете вашия subsystem (com.example.app) в раздела Devices → вашето устройство → Processes. Алтернативно — въведете името на процеса в полето за търсене и изберете Process: YourApp от падащия списък.

Колко дълго Console.app съхранява логове?

По подразбиране macOS съхранява логове в .tracev3 в продължение на 7–14 дни в зависимост от наличното дисково пространство. При недостиг на пространство най-старите логове се изтриват автоматично. Срокът на съхранение може да се увеличи чрез sudo log config, но това не се препоръчва за продукционни машини.

Мога ли да гледам логове на iOS устройство в Console.app?

Да, свържете iOS устройството към Mac чрез USB, отворете Xcode → Devices → изберете устройството → Open Console. Console.app ще покаже логовете на свързаното устройство в реално време. За самостоятелно събиране използвайте log collect в терминала с флаг --device.

Обобщение

  • Console.app — вграден инструмент на macOS за преглед на unified logging (os_log) логове, не изисква Xcode или допълнителни инсталации
  • Филтри — търсене по subsystem, category, ниво на критичност, текст и regex с AND условия за изолиране на логването на конкретно приложение
  • Режими — Live (поток в реално време със закъснение 1–5 секунди) и Historical (архив от 7–14 дни) за анализ на вече възникнали проблеми
  • Експорт — .logarchive с пълни метаданни за предаване на колеги, .json за програмен анализ, .txt за бърз преглед
  • Диагностика — намиране на сривове, изтичания на памет и мрежови грешки без Xcode чрез филтриране на грешки и критични сривове с цветна индикация Fault
  • Отдалечени устройства — преглед на логове на iOS устройство чрез Xcode или експорт чрез log collect с последващо отваряне на .logarchive в Console.app на Mac
  • Поверителност — os_log маскира <private> данни в Console.app в продукционен режим; за отстраняване на грешки използвайте Xcode или профил за събиране на ниво Debug

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също