Xcodeのデバッグビルドでは、シミュレータを使用しているか実際のデバイスを使用しているかに関係なく、NSLog、printf、fprintf assertおよびNSAssertステートメントがコンソールに表示されます
デバイスでリリースビルドを実行すると(テストフライトビルドを送信し、iPhoneで大きくすると、これはリリースビルドになります)、これらのうちどれが記録されますか?
そして、どのようにログを取得しますか?
NSLogは実際にリリースビルドで何かを出力しますか?決定要因は何ですか? stdoutまたはstderrのどちらに書き込むのか? stderrのみがデバイスログに書き込まれますか?これは、fprintfを使用する必要があるということですか?デバイスログに何か書き込まれますか?そんなことさえありますか?もしそうなら、それを拾う方法?
誰かが状況を明確にできますか?
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]];
NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];
freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);
このコードブロックをアプリデリゲートファイルのapplication:didFinishLaunchingWithOptions
メソッドに追加するだけで、すべてのコンソールログイベントを記録するログファイルがiPhoneのアプリドキュメントディレクトリに作成されます。すべてのコンソールイベントを表示するには、iTunesからこのファイルをインポートする必要があります。
注:.plistファイルで、Application supports iTunes file sharing
が存在し、YES
に設定されていることを確認して、iTunesからアクセスできるようにします。
ログファイルを取得するには:iTunesを起動し、デバイスが接続された後、アプリを選択します-アプリを選択します-Augument Documentでファイルを取得します。その後、ディスクに保存できます
Xcode 6.1.1では、次の手順を実行してNSLog出力を表示できます。ただし、過去のログを表示できるかどうかはわかりません。私はそれが数時間にまで戻るのを見ただけです。
いずれにせよ、手順は次のとおりです。
Swift 3.0では、Shylのコードは次のように変更されます。
var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
let documentsDirectory = paths[0]
let fileName = "\(Date()).log"
let logFilePath = (documentsDirectory as NSString).appendingPathComponent(fileName)
freopen(logFilePath.cString(using: String.Encoding.ascii)!, "a+", stderr)
他のすべてのプロセスは、Shylが説明したものと同じです
このコードブロックをアプリデリゲートファイルのapplication:didFinishLaunchingWithOptionsメソッドに追加するだけで、すべてのコンソールログイベントを記録するログファイルがiPhoneのアプリドキュメントディレクトリに作成されます。すべてのコンソールイベントを表示するには、iTunesからこのファイルをインポートする必要があります。
注:.plistファイルで、
Application supports iTunes file sharing
が存在し、YES
に設定されているため、iTunesからアクセスできます。ログファイルを取得するには:iTunesを起動し、デバイスが接続された後、アプリを選択します-アプリを選択します-Augument Documentでファイルを取得します。その後、ディスクに保存できます
NSLogは製品版のデバイスログに書き込まれます。これは、iPhoneをシステムに接続し、オーガナイザーを使用して確認できます。オーガナイザーでiPhoneを選択し、[デバイスログ]をクリックします。ログにすべてのNSLog出力が表示されます。
このリンクはApple非常に有益で完全なものです。開発マシンに接続されているかどうかに関係なく、デバイスのログを表示またはアクセスするためのすべてのオプションを提供します。
https://developer.Apple.com/library/ios/qa/qa1747/_index.html
はい、NSLogはデバイスに出力します。 Xcode Organizerツールを使用して、Macに接続されたデバイスで出力を確認できます。
Testflight SDKを使用している場合、すべてのログを リモートロギング機能 でキャプチャできます。
Xcode 9.3では、デバイスログ画面が新しい場所に移動したと思います。次のリンクを参照してください。
私はこれが古いスレッドであることを知っていますが、デバイスログにアクセスすることもできます:
設定->プライバシー->分析->データ
この助けを願っています
よろしく