我有一个 cocoa 应用核心库是 cocoa 应用使用的C++。
我需要将日志放在应用程序的两个部分中,以便当用户通过崩溃日志报告程序(一个单独的组件)从用户报告日志时,可以轻松诊断问题。

该应用程序的 cocoa 部分日志就像

NSLog(@"something..");

在C++库中,它是C++中的一个单独项目(不是.mm,而是.h和.cpp),我希望有类似的日志。所以如果我这样做
cout<<"log from C++";

如果程序崩溃,我似乎没有在崩溃日志报告程序( objective-c 组件)中获取日志。它似乎只能报告来自 objective-c 的日志。但是,我的确在输出屏幕上看到了来自C++的日志消息,但它似乎也无法将其写入文件,因此如果程序崩溃的日志在那里有待报告。

因此,一致地写入日志的最佳方法是什么,如果程序崩溃,该日志也可以报告。由于该程序是 cocoa ,并且使用单独的C++组件。

编辑

我使用的当机记者是https://github.com/tcurdt/feedbackreporter
并且示例日志之一位于我的机器上的以下路径:/Users/myusername/Library/Logs/DiagnosticReports/MyApp_2013-09-08-220142_mymac.crash

谢谢,

最佳答案

目前尚不清楚崩溃日志报告器如何以及从何处收集日志。 NSLog()将日志写入两个目的地,即stderr和ASL(Apple系统日志)数据库。

因此,使C++日志到达与NSLog()类似位置的一个步骤是使用cerr而不是cout。但是,使它们到达相同位置的最可靠方法是使用C++代码中的ASL API。参见man page。 Peter Hosey还通过一系列博客文章(开始于here)探索了ASL,您可能会发现它很有用。

关于c++ - 从 cocoa 和C++(NSLog和cout)报告日志的一致方式是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18685523/

10-16 18:30