我已将第三方框架集成到我的应用中。
此框架会定期将消息写入日志。
有什么方法可以在我的应用程序代码中捕获这些消息吗?
我需要从那里提取一些有用的数据。
答案 0 :(得分:0)
你说它把它写入“日志” - 如果它是一个它也记录的文件,然后编写你自己的后台任务,每隔一段时间查看一次文件大小,如果它被更改,则将唤醒发布到其他部分你的代码如果记录为“标准输出”或“标准错误”(fd == 1或fd == 2),则可以打开自己的日志文件,然后重新分配文件*。现在发送到stdout或stderr的所有内容都将被发送到您的文件中。
编辑:SO上有很多关于如何使用freemen的帖子 - 就像一行代码一样 - 从这个Rerouting stdin and stdout from C开始。你可能不得不尝试这种模式,但我怀疑“a”会起作用,如果没有尝试“w”。如果文件不存在,将创建该文件。
代码类似于`freopen(pathToMyLogFile,“a”,stdout)',也检查返回码。在Xcode文档视图中搜索命令或使用终端中的man。
答案 1 :(得分:-1)
如果您知道框架的日志记录方法,我的意思是包含您感兴趣的NSLog的方法,您可以使用自己的方法调整方法并在打印之前捕获消息。
在objC方法中,名称映射到其实现(IMP)。交换方法实现(IMP)称为方法调配。使用方法调配,您可以使方法A调用IMP B,反之亦然。有many个资源可供您详细解释。
此技术的适用性取决于框架日志信息的方式。然而,这可以帮助您实现您想要的目标。