Console.app:概要、機能、macOSでのログの読み方

著者: IT Sectr 公開日: 2026-05-29 読了時間: 8 分

Console.appは、システムログおよびユーザーログの表示、フィルタリング、分析を行うためのmacOS内蔵アプリケーションです。Appleのunified loggingシステム(os_log)からのメッセージをリアルタイムで表示し、Xcodeに接続しなくてもクラッシュ、エラー、デバッグメッセージを確認できます。Apple Supportによると、Console.appはサブシステム、カテゴリ、重要度レベル、プロセスによるフィルタリングをサポートし、.logarchiveへのログのエクスポートも可能です。これはMacでの問題診断に不可欠なツールです。フィルターと保存された検索により、数千のシステムメッセージの中からアプリケーションのエラーを素早く見つけることができます。

重要なポイント

  • Console.app — Appleのunified loggingシステムと連携するmacOS内蔵のログビューア
  • フィルタリング — サブシステム、カテゴリ、レベル(Error、Fault、Debug)、メッセージテキストによる検索(正規表現対応)
  • モード — Live(リアルタイムストリーム)とHistorical(アーカイブログ)、ツールバーで切り替え
  • エクスポート — .logarchive、.txt、.json形式でログを保存し、開発者と共有したりバグレポートに添付
  • 保存された検索 — 一般的なシナリオ用の名前付きフィルター:すべてのアプリエラー、ネットワークログ、CrashReporter

Console.appとは

Console.appは、Appleのunified loggingシステムのグラフィカルインターフェースです。古いConsoleアプリケーション(macOSの一部として)を置き換え、os_log、os_trace、syslog APIを通じて書き込まれたすべてのシステムおよびアプリケーションログへのアクセスを提供します。Console.appは任意のMacの/Applications/Utilities/にあります。

XcodeがIDEから起動したアプリケーションのログしか表示しないのに対し、Console.appはシステム上のすべてのプロセスのログを同時に表示します。これにより、Xcodeの外部やバックグラウンドでアプリケーションを起動した場合にのみ発生する問題を診断できます。Console.appはカーネル、launchd、WindowServerなどのシステムログも表示するため、低レベルの問題のデバッグに役立ちます。

Console.appは追加のツールのインストールやインターネット接続を必要としません。すべてのデータは.tracev3データベースにローカルに保存され、アプリケーションは完全にオフラインで動作します。別のMacやiOSデバイスからログを表示するには、log collectコマンドを使用してから、.logarchiveをConsole.appで開きます。

Console.appのインターフェース

Console.appのインターフェースは、フィルター付きのサイドバー、メッセージテーブル、選択したメッセージの詳細パネルの3つの主要エリアで構成されています。サイドバーには、Devices(利用可能なログソース)、Reports(システムクラッシュレポート)、Saved Searches(保存された検索クエリ)のセクションがあります。

メッセージテーブルには、Time(タイムスタンプ)、Category(カテゴリ)、Level(重要度レベル — 色分け表示)、Process(プロセス名)、Message(メッセージテキスト)の列を持つログのリストが表示されます。任意のメッセージをクリックすると詳細パネルが開き、サブシステム、アクティビティ識別子、スレッドID、書式付きの完全なテキストが表示されます。

Console.appはメッセージを色で強調表示します:Faultは赤、Errorは黄、Debugは青、Infoはグレー。Defaultメッセージは強調表示されません。これにより、ログストリームを視覚的にスキャンし、重大なイベントを即座に把握できます。

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")

// これらのメッセージはフィルター「myapp」を適用したConsole.appで表示されます

Console.appのフィルターと検索

フィルタリングはConsole.appの主要機能であり、毎秒数千のメッセージのストリームを読み取り可能なリストに変換します。上部の検索フィールドはAND条件をサポートしています:スペースで区切られた複数の単語は、すべての単語を含むメッセージのみを表示します。例えば、myapp errorと入力すると、Errorレベルのmyappアプリケーションのすべてのログが表示されます。

サイドバーのサブシステムフィルターでは、1つ以上のサブシステムを選択できます。これは、システムメッセージから特定のアプリケーションのログを分離する最も速い方法です。カテゴリフィルターはサブシステムを選択した後に利用可能になり、選択したアプリケーションで使用されているすべてのカテゴリを表示します。レベルフィルターは重要度レベルに応じてメッセージを制限します:エラーのみ、またはデバッグメッセージのみを表示できます。

フィルターの種類結果
テキストcrash paymentcrashとpaymentの両方を含むメッセージ
Subsystemcom.example.myapp指定したアプリケーションのログのみ
LevelError + Faultエラーと重大な障害のみ
Categorynetworknetworkカテゴリのメッセージ
時間過去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は履歴データを表示します。このモードでは、カレンダーまたは← →ボタンを使用してタイムラインを移動できます。Historicalデータはディスクに保存されたログに対してのみ利用可能で、リングバッファで上書きされたメッセージはアーカイブに含まれません。

ログのエクスポートと共有

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をMacのConsole.appで開くと、リモートデバイスからのログが表示されますが、フィルターと検索はローカルログと同じように機能します。

swift
// ターミナル経由のiOSデバイスログのエクスポート
// log collect --device --output ./ios_crash.logarchive
// log show --subsystem com.example.app --last 1h --output json

// 例:過去1時間のログをエクスポート
// 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チケットに添付したりするのに最適な形式です。ファイルにはメッセージだけでなく、サブシステム、カテゴリ、タイムスタンプ、スレッドID、およびすべてのメタデータが含まれます。.tracev3圧縮のおかげで、アーカイブサイズは生のログよりも大幅に小さくなります。送信前にログにプライベートデータが含まれていないことを確認してください:アプリケーションのサブシステムでフィルターを使用して、他のプロセスの機密情報を含む可能性のあるシステムログを除外します。

Console.appを使った実践的なデバッグ例

Xcodeなしでのクラッシュ診断:アプリケーションがXcodeの外部で起動時にクラッシュした場合、Console.appはプロセスからのFaultメッセージを表示します。サイドバーでReports → Crash Reportsを探してください。署名とスタックを伴う完全なクラッシュレポートが表示されます。アプリケーションのサブシステムフィルターを使用し、レベルをError+Faultに設定して、クラッシュ前のすべての重大なイベントを確認します。

Console.appによるパフォーマンス分析

Console.appを使用すると、タイムスタンプを使ってアプリケーションの遅延を追跡できます。2つの関連するメッセージ(例:“リクエスト送信”と“応答受信”)の間に予想以上の時間が経過した場合、それはパフォーマンスの問題のシグナルです。Defaultレベルのアプリケーションのサブシステムフィルターは、ミリ秒単位の精度で主要なイベントをすべて表示します。

メモリリークの発見:メモリリークが発生すると、システムはmemoryカテゴリとErrorレベルでos_logを介してメモリ警告を送信します。Console.appでmemoryという単語でフィルターし、サブシステムを選択します。警告が5〜10秒ごとに繰り返される場合、アプリケーションはメモリを積極的に消費しています。割り当てを追跡するためにDebugログを有効にすることもできます。

ネットワークリクエストのデバッグ:アプリケーションがネットワークイベントにos_logを使用している場合、Console.appはすべてのリクエストとレスポンスをタイミングとともに表示します。category=networkフィルターでノイズを低減します。リクエストとレスポンスの間の時間が予想を超える場合は、level=Errorのメッセージを探してください — タイムアウトやDNSエラーを示しています。

swift
// Console.app JSONログ解析用の構造
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"
        }
    }
}

よくある質問

MacでConsole.appはどこにありますか?

Console.appは/Applications/Utilities/フォルダにあります。Spotlight(⌘スペース → Console)またはFinder → アプリケーション → ユーティリティ → Consoleから開けます。アプリアイコンは歯車の付いたスタイライズされた吹き出しです。

Console.appが値の代わりに<private>と表示するのはなぜですか?

os_logはデフォルトで文字列とオブジェクトをprivateとしてマスクします。Console.appはプロダクションモードでそれらを<private>として表示します。実際の値を確認するには、Xcodeからアプリケーションを起動するか、サブシステムのDebugレベルの収集プロファイルを有効にします。

自分のアプリケーションのログだけをフィルタリングするには?

Console.appのサイドバーで、Devices → デバイス → Processesセクションからサブシステム(com.example.app)を選択します。または、検索フィールドにプロセス名を入力し、ドロップダウンリストからProcess:YourAppを選択します。

Console.appはログをどのくらい保存しますか?

デフォルトでは、macOSは利用可能なディスク容量に応じて、ログを.tracev3に7〜14日間保存します。容量が不足すると、最も古いログから自動的に削除されます。sudo log configで保存期間を延長できますが、プロダクションマシンでは推奨されません。

Console.appでiOSデバイスのログを表示できますか?

はい、iOSデバイスをUSBでMacに接続し、Xcode → Devicesを開いてデバイスを選択し、Open Consoleをクリックします。Console.appは接続されたデバイスのログをリアルタイムで表示します。オフライン収集の場合は、ターミナルで--deviceフラグを付けてlog collectを使用します。

まとめ

  • Console.app — Xcodeや追加インストール不要の、unified logging(os_log)ログを表示するmacOS内蔵ツール
  • フィルター — AND条件によるサブシステム、カテゴリ、重要度レベル、テキスト、正規表現での検索で特定アプリのログを分離
  • モード — Live(1〜5秒遅延のリアルタイムストリーム)とHistorical(7〜14日間のアーカイブ)で既存の問題を分析
  • エクスポート — 同僚と共有するための完全メタデータ付き.logarchive、プログラム分析用.json、簡易表示用.txt
  • 診断 — Fault色表示でエラーと重大な障害によるフィルタリングで、Xcodeなしでクラッシュ、メモリリーク、ネットワークエラーを発見
  • リモートデバイス — Xcode経由でiOSデバイスのログを表示、またはlog collectでエクスポートしてMacのConsole.appで.logarchiveを開く
  • プライバシー — os_logはプロダクションモードでConsole.appの<private>データをマスク。デバッグにはXcodeまたはDebugレベルの収集プロファイルを使用

ターンキー方式のモバイルアプリケーションを開発します

IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。

プロジェクトについて相談

こちらもお読みください