【问题标题】:(iOS) Way of viewing log messages directly on an iOS device?(iOS) 直接在 iOS 设备上查看日志消息的方式?
【发布时间】:2013-07-13 21:59:23
【问题描述】:

尽管调试器现在已经变得很好,但有时找出应用程序中发生的事情的最佳方法仍然是 ye olde NSLog。当您连接到计算机时,这样做很容易; Xcode 有用地弹出 Log Viewer 面板,然后就可以了。当您离开办公桌时,这样做并不容易,因为您有时必须在测试应用程序时(例如,当您测试 CoreLocation 功能时)。当然,您可以在从测试运行返回后立即打开 Xcode 并检查设备管理器的控制台部分,但是您必须等待,等到您可以返回查看日志时,您会忘记发生了什么你的应用有问题;也很有可能,当您能够做到这一点时,您正在寻找的日志消息已经被遗忘了。

有没有办法检查设备本身的控制台日志?我猜答案是“不,除非你越狱”(IIRC 在越狱领域至少有一个或两个终端应用程序可以用来做这种事情)。不幸的是,越狱不是我的选择。

或者,是否有某种 Objective-C 框架或库或诸如此类的东西来处理日志收集和设备上显示?理想情况下,这将以直接替换NSLog 的形式出现,我可以简单地进行搜索和替换,并将所有出现的NSLog 更改为SomeFancyPantsLoggingTool 或其他任何内容,然后用它来完成。

我正在寻找的那种功能的一个很好的例子可以在播客客户端Downcast 中找到。如果您点击“更多”选项卡,然后点击屏幕底部的版本号字符串,则会向上滑动一个新视图,其中包含累积日志消息的可滚动视图。它甚至有一种简单的方式将所述日志邮寄到支持电子邮件地址。

【问题讨论】:

  • 你不能替换你的老NSLog()。您应该连接到系统日志。 man syslogman syslogd 是你的朋友,也可以尝试连接到 lockdownd 并从中获取系统日志(虽然这是一个私有 API,所以在提交到 AppStore 之前将 #ifdef 删除。)
  • 我一般使用自己的记录器。我有一组与 NSLog 和我自己的参数一起使用的定义。由于我想将自己的日志保存在单独的文件中(每天),我只需通过使用“stderr”freopen([pathToFile UTF8String]、“a”、stderr)调用“freopen”将所有日志重定向到新创建的文件。然后,当用户遇到问题并单击我的“联系支持”按钮时,我可以将这些日志发送给自己。

标签: ios objective-c logging nslog


【解决方案1】:

查看LibComponentLogging,您可以将其配置为在不同级别和不同目的地输出日志记录。

【讨论】:

    【解决方案2】:

    系统日志有一个文件。您可以简单地打开它并从中读取。该文件位于 /var/log/syslog。如果该文件不存在,则有关于如何设置它的说明here

    【讨论】:

      猜你喜欢
      • 2018-08-16
      • 2014-11-25
      • 2019-12-13
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-07
      相关资源
      最近更新 更多