Objective c iOS-应用程序日志记录测试和生产代码

Objective c iOS-应用程序日志记录测试和生产代码,objective-c,ios,logging,flurry,Objective C,Ios,Logging,Flurry,当我测试我的应用程序时,我会做大量的日志记录,这对于获取变量状态等信息非常有用 然而,我已经读到,您应该在生产代码中稀疏地使用日志记录(因为它可能会降低您的应用程序的速度)。但我现在的问题是:如果我的应用程序正在生产中,人们正在使用它,每当崩溃发生时(上帝禁止),如果我删除了日志记录语句,我将如何解释崩溃信息?那么我想我只有一个stacktrace供我解释 这是否意味着我应该只在需要解释发生了什么的地方才登录生产代码 此外,日志记录语句与崩溃报告的关系如何?他们会合并吗?我正在考虑将其用作分析和

当我测试我的应用程序时,我会做大量的日志记录,这对于获取变量状态等信息非常有用

然而,我已经读到,您应该在生产代码中稀疏地使用日志记录(因为它可能会降低您的应用程序的速度)。但我现在的问题是:如果我的应用程序正在生产中,人们正在使用它,每当崩溃发生时(上帝禁止),如果我删除了日志记录语句,我将如何解释崩溃信息?那么我想我只有一个stacktrace供我解释

这是否意味着我应该只在需要解释发生了什么的地方才登录生产代码


此外,日志记录语句与崩溃报告的关系如何?他们会合并吗?我正在考虑将其用作分析和崩溃报告…

据我所知,解决您的问题的最佳选择之一是。 它是一个完全集成、免费且易于使用的碰撞报告系统。
祝你好运

你应该在你发布的应用中加入大量的日志记录。正如您所怀疑的那样,它在调试时可以极大地帮助您,如果您确保日志消息措词恰当、合理地自我解释并包含所有相关细节,它甚至可以帮助您的超级用户进行自我调试

好的日志记录系统有很多方面。有一些常见的模式通常是值得遵循的(尽管在iOS上,一些模式的应用比其他模式更为广泛):

  • 根据严重程度区分日志。例如,错误、警告、信息、调试。另一个例子是,Syslog就是这样做的。除了帮助您首先关注更严重的问题之外,您还可以为您的发布版本设置一个最低级别的“信息性”版本,例如,从而排除更详细的调试版本,同时保留出现问题时所需的所有版本。这样,你就可以删除那些可能非常冗长或频繁的日志消息(从而有可能减慢你的应用程序的速度),但留下一些重要的消息
  • 允许在运行时配置日志记录级别(通常通过命令行标志完成,但显然不是在iOS上)。例如,默认情况下,您可以仅显示警告和错误,但可以选择通过标志扩展警告和错误
  • 至少在调试版本中,在所有日志消息中包括文件名和行号。您可能对在发布版本中包含文件名有所保留,但至少要包含行号——这将有助于确保您在调试时看到正确的代码;您可能(无意或有意)在同一文件中的多个位置有类似的日志语句
  • 用普通英语写日志信息,语法好,缩写最少,并包含所有相关变量的值。如果出现错误或警告,还应包括一份关于该情况后果的声明。e、 g.“无法连接到someserver:1234-错误-18(ETIMEOUT)。无法确定是否有可用的应用程序更新。”
  • 尽量减少日志中的用户敏感数据,并在处理包含这些数据的日志时要非常小心。永远不要记录密码或类似性质的东西,甚至不要记录诸如密码长度或哈希之类的辅助信息。请注意,即使是他们提供的网站地址这样看似温和的东西也可能被认为是敏感的(他们可能不想让别人知道他们经常访问www.lumberjacksandpressedwildflowers.com)。如果您有这些日志的任何类型的传输,这一点尤其重要-您需要采用SSL等
  • 您可以从预构建的日志系统中获得许多这些功能,例如和(或)。毫无疑问还有其他人