3

如何使用 Xcode 和 c++ 将日志消息发送到 Console.app?我可以访问的唯一代码是 c++ 源代码,而不是 Objective-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 回答