如何使用Xcode和c ++将日志消息发送到控制台应用程序?

Aly*_*hak 1 c++ console xcode logging

如何使用Xcode和C ++将日志消息发送到Console.app?我唯一可以访问的代码是c ++源代码,而不是Objective-C。另外,商店中的其他开发人员需要能够使用Mac Console应用程序(Console.app)来跟踪日志消息,因此,不能选择使用Xcode控制台。我基本上是在寻找NSLog替代方案。像这样简单的事情。谢谢。

Bob*_*phy 5

如果要写入系统日志,可以使用syslog(),如下所示:

openlog("foo", (LOG_CONS|LOG_PERROR|LOG_PID), LOG_USER);
syslog(priority, "%s", "a message");
closelog();
Run Code Online (Sandbox Code Playgroud)

但是,我发现写入自己的日志文件更为方便,该日志文件可以由Console.app读取。这使我可以进行比syslog()更出色的格式化,而且我也不必在系统日志中的许多其他消息中搜寻我的消息。

这是我对称为“ foo”的程序执行的操作:

  1. 获取当前用户的主目录。您可以通过使用getuid()和getpwuid()来获取passwd结构,并从中分析主目录字符串来做到这一点。
  2. 将“ /Library/Logs/foo.log”追加到主目录字符串。
  3. 使用它作为fopen()的路径参数来为日志文件创建FILE *。
  4. 然后使用标准的fprintf(),fflush()等调用来写入日志文件。
  5. 在程序执行结束时关闭日志文件。

您可以在Console.app中打开文件>〜/ Library / Logs来查看此结果。文件“ foo.log”将在那里,并包含您的日志记录的内容。