fatalError メッセージを iOS クラッシュ ログに保存するにはどうすればよいですか? 質問する

fatalError メッセージを iOS クラッシュ ログに保存するにはどうすればよいですか? 質問する

Xcode 8.2.1 で Swift 2 で記述され、iOS 10.2 用にビルドされた iOS アプリケーションがあります。

TestFlight から多数のクラッシュ レポートを受け取りましたが、シンボル化にもかかわらず、クラッシュ ログにはスタック トレース以外のプログラム状態 (引数値、ローカル、ヒープ オブジェクトなど) は表示されません。

...しかし、これらの関数内には失敗する可能性のあるコード (強制アンラップなど) が見つかりますが、クラッシュ ログにはどこで、なぜ失敗するのかが示されません。

Xcode でデバッグする場合、やfatalError(message: String)などの独自のメッセージを配置できる を使用できますが、TestFlight または App Store を使用してデプロイされた場合は がヒットしてプログラムが終了しますが、値はクラッシュ ログに保存されないため意味がありません。"functionFoo returned nil""variable bar == \"" + bar + "\""fatalErrormessage

C#/.NET や Java などの他の環境では、throw new SomeExceptionType("my message")グローバルcatch(Exception)ハンドラーがあれば、すべての情報を簡単に利用できるようになります。

iOS / Swift で同じ目標を達成するにはどうすればよいでしょうか?

ベストアンサー1

おそらくこれが役に立つでしょう

import os

let osLogger = Logger(subsystem: yourBundleIdentifier, category: yourCategory)
osLogger.log(level: .debug, "\(yourCategoryName): \(message)")

おすすめ記事