我有一个 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/