2

SLog指定したファイルにNの内容を書き込めるようにしたい、またはファイルにログを書き込む関数が必要です。例:

WriteLog(@"some activity by the user");
WriteLog(@"some more activity by the user");

しかし、私は出力を次のようにしたいと思います。

12-25-2009 1:30:00PM some activity by the user
12-25-2009 1:35:00PM some more activity by the user

誰かが私がこれを行う方法を知っていますか?行の先頭に日付と時刻が必要であることに注意してください。

また、何らかの理由でfreopen、ファイルにデータを書き込まず、ファイルを作成します。出力はありません。

4

2 に答える 2

2

さてNSLog、実際にはその出力の行き先をカスタマイズすることはできないので、独自のロギング関数をロールするのが最善です。個人的にはlog_finelog_infoスタイルを使用して、NSStringのwriteToFileメソッドのようなものを使用します。

[log_string writeToFile:@ "log.log"アトミック:YESエンコーディング:NSUTF8StringEncodingエラー:NULL];

唯一の問題は、アトミックオプションを使用するとパフォーマンスに影響を与える可能性があるため、これがより良い解決策になる可能性があります。

NSFileHandle * output = [NSFileHandle fileHandleForWritingAtPath: "log.log"];
[出力seekToEndOfFile];
[出力writeData:[log_string dataUsingEncoding:NSUTF8StringEncoding]];

日付/時刻のフォーマットについては、NSDateFormatterクラスを参照してください。

于 2009-12-06T09:10:06.867 に答える
2

私は独自のログをファイル クラスに書きましたが、ほとんどの場合、デバッガー コンソールの内容をコピーしてファイルに貼り付け、必要に応じて編集またはスクリプトを使用して処理する方が簡単であることがわかりました。これは、非常に大きなダンプでもうまく機能します。私もそのようにテーブルをダンプしました。それは洗練されていませんが、ファイルをいじるよりもはるかに速く、エラーが発生しにくいです。

于 2009-12-06T16:33:28.987 に答える