如何以编程方式获取iOS应用程序中的日志消息?

5
我正在使用在https://developer.apple.com/documentation/os/logging中定义的方法来记录iOS应用程序中的消息。如何以编程方式读取/访问已记录的消息?
如果我的应用程序中有任何问题,用户可以从应用内发送反馈。我希望将记录的消息附加到反馈中,以便找出发生了什么。
是否有一种方法可以以编程方式获取应用程序记录的所有消息? 是否有一种方法可以以编程方式获取文件系统中存储的日志文件?

为什么不在你的应用中集成Firebase/Crashlytics呢?通常你只需要日志来查看崩溃情况。即使没有用户报告崩溃,它们也会为你获取这些信息。 - NSNoob
3
我会尽力为您翻译:@NSNoob 我希望即使应用程序没有崩溃,我也能获取日志,但应用程序的某些模块可能无法按预期工作。 - user10461683
1个回答

1
你想要获取的日志非常难以获取,也有保护措施。
我有一段代码片段,可以将所有NSLog数据写入文件。
这将保存所有控制台日志到一个文件中,然后当用户通过API给你写反馈时,你可以获取该文件。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES);

NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]];

NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName];

freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接