Console.app: що це, функції та як читати логи в macOS

Автор: IT Sectr Опубліковано: 2026-05-29 Час читання: 8 хв

Console.app — це вбудований додаток macOS для перегляду, фільтрації та аналізу системних і користувацьких логів. Він відображає повідомлення з уніфікованої системи журналювання Apple (os_log) у реальному часі, дозволяючи розробнику бачити збої, помилки та налагоджувальні повідомлення без підключення до Xcode. Згідно з Apple Support, Console.app підтримує фільтрацію за підсистемою, категорією, рівнем критичності та процесом, а також експорт логів у .logarchive для передачі розробнику. Це незамінний інструмент для діагностики проблем на Mac: фільтри та збережені пошуки дозволяють швидко знаходити помилки в додатку серед тисяч системних повідомлень.

Головне

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

Що таке Console.app

Console.app — це графічний інтерфейс до уніфікованої системи журналювання 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 (текст повідомлення). Клік на будь-якому повідомленні відкриває панель деталей, де показано підсистему, ідентифікатор активності, ідентифікатор потоку та повний текст із форматуванням.

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.

Фільтр підсистеми у бічній панелі дозволяє вибрати одну або кілька підсистем. Це найшвидший спосіб ізолювати логи конкретного додатка від системних повідомлень. Фільтр категорії доступний після вибору підсистеми — він показує всі категорії, які використовує вибраний додаток. Фільтр рівня обмежує повідомлення за рівнем критичності: можна показати лише помилки або лише налагоджувальні повідомлення.

Тип фільтраПрикладРезультат
Текстcrash paymentПовідомлення, що містять crash І payment
Subsystemcom.example.myappЛише логи вказаного додатка
LevelError + FaultЛише помилки та критичні збої
CategorynetworkПовідомлення з категорією network
ЧасОстання 1 годинаПовідомлення лише за вибраний інтервал

Регулярні вирази в пошуку

Поле пошуку Console.app підтримує регулярні вирази через конструкцію REGEX:pattern. Приклад: REGEX:error.*tim(e|out) знайде всі повідомлення, що містять «error» і слово, яке починається на «tim» і закінчується на «e» або «out». Регулярні вирази працюють лише в полі пошуку, а не у фільтрах підсистеми або категорії.

Режими 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-тікета. Файл містить не лише повідомлення, але й підсистему, категорію, часові мітки, ідентифікатори потоків та всі метадані. Розмір архіву значно менший за сирі логи завдяки стисненню .tracev3. Перед відправкою переконайтеся, що в логах немає приватних даних: використовуйте фільтр за підсистемою вашого додатка, щоб виключити системні логи, які можуть містити конфіденційну інформацію інших процесів.

Практичні приклади налагодження через Console.app

Діагностика збою без Xcode: якщо додаток впав при запуску не з Xcode, Console.app покаже повідомлення Fault від процесу. Знайдіть у бічній панелі Reports → Crash Reports — там відображаються повні звіти про падіння з сигнатурою та стеком. Використовуйте фільтр підсистеми для вашого додатка та встановіть рівень Error+Fault, щоб побачити всі критичні події перед збоєм.

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

Console.app дозволяє відстежувати затримки в додатку за часовими мітками. Якщо між двома пов'язаними повідомленнями (наприклад, «запит надіслано» та «відповідь отримано») минуло більше очікуваного часу — це сигнал про проблему з продуктивністю. Фільтр за підсистемою вашого додатка з рівнем Default покаже всі ключові події з точністю до мілісекунди.

Пошук витоку пам'яті: при витоку пам'яті система надсилає попередження про пам'ять через os_log з категорією memory та рівнем Error. У Console.app відфільтруйте за словом memory та виберіть вашу підсистему. Якщо попередження повторюється кожні 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 для вашої підсистеми.

Як відфільтрувати логи лише мого додатка?

У бічній панелі Console.app виберіть вашу підсистему (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 для перегляду логів уніфікованого журналювання (os_log), що не потребує Xcode або додаткових встановлень
  • Фільтри — пошук за підсистемою, категорією, рівнем критичності, текстом та регулярними виразами з умовами 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також