如何使用 Xcode 和 c++ 将日志消息发送到 Console.app?我可以访问的唯一代码是 c++ 源代码,而不是 Objective-C。此外,商店中的其他开发人员需要能够使用 Mac 控制台应用程序 (Console.app) 跟踪日志消息,因此不能选择使用 Xcode 控制台。我基本上是在寻找NSLog(...)
替代品。像这样简单的东西。谢谢。
问问题
2619 次
1 回答
7
如果要写入系统日志,可以使用 syslog() 如下:
openlog("foo", (LOG_CONS|LOG_PERROR|LOG_PID), LOG_USER);
syslog(priority, "%s", "a message");
closelog();
但是,我发现写入自己的日志文件更方便,Console.app 可以读取该文件。这让我可以进行比 syslog() 支持的更高级的格式化,而且我也不必在系统日志中的许多其他消息中寻找我的消息。
下面是我如何为一个名为“foo”的程序执行此操作:
- 获取当前用户的主目录。您可以通过使用 getuid() 和 getpwuid() 来获取 passwd 结构,并从中分析主目录字符串来做到这一点。
- 将“/Library/Logs/foo.log”附加到主目录字符串。
- 使用它作为 fopen() 的路径参数来为日志文件创建一个 FILE*。
- 然后使用标准的 fprintf()、fflush() 等调用写入日志文件。
- 在程序执行结束时关闭日志文件。
您可以通过打开 Files > ~/Library/Logs 在 Console.app 中查看结果。文件“foo.log”将在那里并包含您的日志记录的内容。
于 2013-01-12T03:17:41.887 回答