2017-01-29 5 views
0

iPhoneアプリの場合、分析のためオンラインサービスに送信するために、デバッグデータをファイルに収集する必要があります。これは、ファイルハンドルに出力をstderrに差し向け、適切な場合にファイルを送信することによって問題なく動作します。 (NSLogの出力もstderrになりますので、これはボード全体で機能します)。同じ方法でもstdoutで正常に動作します。ここでスウィフトスタンダードと単一ファイルへのスタウト

は、私は、ファイルへの保存を行う方法です。

freopen(cStringFilePath, "a+", stderr) // or stdout 

上記が正しく、私は必要なファイルを閉じるためにを追跡UnsafeMutablePointer<FILE>を返します。

ファイル にしかし、私はラインによって正しい時系列ラインで、stdoutstderr両方のコンテンツが必要になります。

これは、診断出力を生成するが、stderrではなくstdoutに書き込むサードパーティのフレームワークをデバッグしようとしているためです。

どのようにすればよいでしょうか?

答えて

2

freopenを2回呼び出すだけでしたか?一度stderrstdoutと1回?私はそれを試したときに私の目的のためにうまくいったと思う。

+0

いいえ、最後に使用したものだけをキャプチャするようです。 – Mundi

+0

修正。それは働いているようだ。ワオ。しかしそれは安全ですか? 2つのストリームが同時にファイルにアクセスしようとするとどうなりますか? – Mundi

+0

ええ、それは "安全"でなければなりません。つまり、クラッシュするべきではありませんが、バッファリングルールのために出力がインターリーブされることがあります。これらのファイル記述子でバッファリングがどのように起こるかを変更できると思いますが、私の頭の上のどのような部分がわからないのか分かりません。 –

関連する問題