ご存じの通り、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 です)。左の矢印アイコンをクリックして、検索条件を「プロセス」に変更します。



