6

アプリケーションでNSLogを使用しています。そして、各文字列の煩わしい始まりを取り除きたいと思います: "2009-07-01 21:11:06.508 MyApp [1191:207]"。

そうする方法はありますか?おそらく別のロギング機能?

ありがとう。

4

5 に答える 5

12

これらを読んでください:

これは、元は CocoaHeads サイトの「QuietLog」と呼ばれる Github プロジェクトで、QuietLogあなたが説明していることを行う関数を作成する方法を説明しています。また、QuietLog を LocationLog というマクロにラップして、ログ ステートメントを取得したファイル名と行番号を出力する方法も示します。私はすべてのプロジェクトでそれを使用しており、迷子の「NSLog」ステートメントを失うことはもうありません。

于 2009-07-01T19:10:06.657 に答える
2

NSLogこのプリプロセッサ マクロは簡単に実装でき、現在のステートメントを変更する必要はありません。

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

NSLogメッセージの前に余分なものがない場合とまったく同じように機能します。

私はもともとこれを別のSOの質問で見つけましたが、今は見つけられません。

于 2012-08-07T01:45:03.287 に答える
1

CFShow()を試しましたか?

于 2009-07-01T19:49:30.370 に答える
1

書式文字列と引数に Objective-C オブジェクトを使用できるのが好きなので、NSLog() を書き直してユーティリティに追加しました。


+ (void)myLog:(NSString *)formatString, ...
{
    va_list args;
    va_start(args, formatString);
    NSString* output = [[NSString alloc] initWithFormat:formatString arguments:args];
    fprintf(stderr, "%s\n", [output UTF8String]);
    [output release];
    va_end(args);
}
于 2009-07-01T19:36:55.043 に答える