如何查看动态框架中使用的 NSLogs 打印的日志?

Posted

技术标签:

【中文标题】如何查看动态框架中使用的 NSLogs 打印的日志?【英文标题】:How to see the logs printed by NSLogs used in a dynamic framework? 【发布时间】:2016-12-15 07:55:46 【问题描述】:

该应用程序使用作为动态框架构建的 c++ 库。对于在 ios 10.x 上运行的应用程序,我无法在设备控制台(查看已部署应用程序日志的控制台,而不是 xcode 调试控制台)上查看框架中的日志。我可以看到在 iOS 9.x 上运行的同一应用程序的日志。

我尝试在运行时将 NSLog 替换为使用宏的自定义记录器。虽然它适用于应用程序代码,但它不适用于库框架内的代码。有没有办法在不修改库代码的情况下使用也适用于外部框架的宏来替换 NSLog?

如果我必须完全修改库代码以替换 NSLogs,我应该用什么替换它,以便它显示在已部署应用程序的设备控制台上?

【问题讨论】:

【参考方案1】:

有没有办法使用适用于外部的宏来替换 NSLog 框架也一样,不修改库代码?

我找不到任何方法,因为它已经编译了。

如果我必须完全修改库代码来替换 NSLogs, 我应该用什么替换它,所以它会显示在设备控制台上 部署的应用程序?

if ([[[UIDevice currentDevice] systemVersion] compare:10.0 options:NSNumericSearch] != NSOrderedAscending) 
    os_log(OS_LOG_DEFAULT, formattedMsg);
 else 
    NSLog(@"%s", formattedMsg);

使用 OS_LOG_DEFAULT,使日志可见性与系统日志相同。希望这会有所帮助。

【讨论】:

【参考方案2】:

我是一个名为 Bugfender 的产品的联合创始人,它可能会对您有所帮助,我们有一个 SDK,它提供了替换 NSLog 的功能并将日志发送到我们的服务器。

我们有这个 SDK 的动态框架版本,您可以将其集成到您的库中以获取它的日志。

我们的 SDK 将在进行开发或应用发布到商店后工作。

【讨论】:

以上是关于如何查看动态框架中使用的 NSLogs 打印的日志?的主要内容,如果未能解决你的问题,请参考以下文章

发布我的应用程序时我应该删除 NSLogs

想要将我们的OSGi框架中的批量日志单独打印到文件中

打印日志查看调接口时间

怎么让xshell打印的日志显示时间

Erlang - 入门之一日志系统如何打印输出使用lager框架

Erlang - 入门之一日志系统如何打印输出使用lager框架