ご存じの通り、printを利用するとログメッセージをXcodeのコンソール内に表示させることができますが、printではログメッセージは一切保存されません。
しかしながら、printコマンドで表示されたメッセージに含まれているのはテキストのみです。ログメッセージをさらにオーガナイズしたい場合には、os
フレームワークの使用が可能です。
この記事では、iOS 14におけるSwiftでの os
フレームワークの使用について、およびログメッセージを読むための Console.app
アプリの使用について説明します。
os
フレームワークの使用
iOS 14では、os
フレームワークが向上します。
まずは、ログインスタンスを初期化します
let logger = Logger(subsystem: "com.example.OSLogExample", category: "OSLogExample")
Console.app
アプリケーション内で名前を検索することでログメッセージを簡単に見つけることができるように、subsystem
と category
に一意の名前を指定する必要があります。
ログレベル
5つのログレベルがあります。
名 | 説明 | Xcode にリアルタイムで表示されますか。 | Console.app にリアルタイムで表示されますか。 |
---|---|---|---|
.debug | 一般的なデバッグメッセージのため | はい | いいえ |
.info | 情報ログメッセージのため | はい | はい |
.notice | 通知メッセージのため | はい | はい |
.error | エラーメッセージのため | はい | はい |
.fault | 障害メッセージのため | はい | はい |
@State var publicLogContent: String = "パブリックログコンテンツ"
@State var privateLogContent: String = "プライベートログコンテンツ"
//.debug
logger.debug("これはデバッグログです: \(self.publicLogContent, privacy: .public) \(self.privateLogContent, privacy: .private)")
//.log
logger.log("これは情報ログです: \(self.publicLogContent, privacy: .public) \(self.privateLogContent, privacy: .private)")
//.notice
logger.notice("これは通知ログです: \(self.publicLogContent, privacy: .public) \(self.privateLogContent, privacy: .private)")
//.error
logger.error("これはエラーログです: \(self.publicLogContent, privacy: .public) \(self.privateLogContent, privacy: .private)")
//.fault
logger.fault("これは不具合です: \(self.publicLogContent, privacy: .public) \(self.privateLogContent, privacy: .private)")
Console.app
アプリケーション内にプライベートコンテンツ (privacy: .private)
が非表示になります
全てのメッセージのタイプに関して、お持ちのデバイスがコンピューターにつながっている場合、メッセージはXcodeウィンドウで見られます。

.info
、.notice
、.error
及び .fault
については、お使いのデバイスがコンピューターに接続されており、Xcodeコードによってローンチされている場合、Console.app
アプリケーション内に現れるメッセージを確認できます。
Xcodeでアプリが起動していない状態で、デバイスをコンピュータに接続すると、プライベートコンテンツが非表示になります。
Macで Console.app
アプリを使用する
Macで Console.app
を開き、iPhoneから送られてくるログメッセージを読むことができます。場所は アプリケーション > ユーティリティ > コンソール です。
次に、カテゴリ名 category
を入力します(この例では OSLogExample
です)。左の矢印アイコンをクリックして、検索条件を「プロセス」に変更します。