3

Xcodeとc++を使用してConsole.appにログメッセージを送信するにはどうすればよいですか?私がアクセスできる唯一のコードは、Objective-Cではなくc++ソースです。また、ショップの他の開発者は、Macコンソールアプリ(Console.app)を使用してログメッセージを追跡できる必要があるため、Xcodeコンソールを使用することはできません。私は基本的にNSLog(...)代替案を探しています。そのような単純なもの。ありがとう。

4

1 に答える 1

7

システム ログに書き込みたい場合は、次のように syslog() を使用できます。

openlog("foo", (LOG_CONS|LOG_PERROR|LOG_PID), LOG_USER);
syslog(priority, "%s", "a message");
closelog();

ただし、Console.app で読み取ることができる独自のログ ファイルに書き込む方が便利だと思います。これにより、syslog() がサポートするよりも手の込んだ書式設定を行うことができます。また、システム ログ内の他の多くのメッセージの中から自分のメッセージを探す必要もありません。

「foo」と呼ぶプログラムでこれを行う方法は次のとおりです。

  1. 現在のユーザーのホーム ディレクトリを取得します。これを行うには、getuid() と getpwuid() を使用して passwd 構造体を取得し、そこからホーム ディレクトリ文字列を分析します。
  2. ホーム ディレクトリ文字列に「/Library/Logs/foo.log」を追加します。
  3. これを fopen() へのパス引数として使用して、ログ ファイルの FILE* を作成します。
  4. 次に、標準の fprintf()、fflush() などの呼び出しを使用して、ログ ファイルに書き込みます。
  5. プログラム実行の終了時にログ ファイルを閉じます。

[Files] > [~/Library/Logs] を開くと、Console.app でこの結果を確認できます。ファイル「foo.log」がそこにあり、ログの内容が含まれています。

于 2013-01-12T03:17:41.887 に答える