Crashlytics iOS – 日志捕获exception
我find了在Crashlytics Android SDK中logging自定义捕获的exception的方法,但是我找不到像iOS SDK那样的东西。 有没有办法loggingiOS上的Crashlytics捕获的exception?
请参阅Android说明: http : //support.crashlytics.com/knowledgebase/articles/202805-logging-caught-exceptions
迈克从Crashlytics和织物在这里。
您现在可以在iOS,tvOS或OS X应用程序中捕获logging的NSErrors。 你想使用:
[CrashlyticsKit recordError:error];
要么
Crashlytics.sharedInstance().recordError(error)
这将使您可以捕获每个用户会话logging的NSErrors的相当数量。 这些只在应用程序重新启动时发送。 logging的错误错误按错误域和代码分组。 这意味着错误问题可以跨越许多不同的呼叫站点。
见文档
这是我正在等待的function,并亲自向他们索要(我相信其他人也有这个function)。 他们说他们正在研究/考虑它,但还没有。
编辑
这个function现在在Crashlytics! 你可以loggingNSErrors 🙂
使用Crashlytics SDK在iOS中logging捕获的exception是不可能的。 CLS_LOG可以用来logging自定义消息,但是这些日志消息只会在下一次崩溃数据时才会被发送到Crashlytics。 如果没有崩溃,这些日志消息将永远不会落在Crashlytics仪表板中。 我得到了Crashlytics支持团队的相关正式确认。 iOS中的日志捕获exception在他们的路线图中。
最后Crashlytics添加了所需的function3.5.0!
[CrashlyticsKit recordError:error];
要么
Crashlytics.sharedInstance().recordError(error)
参考
/** * * This allows you to record a non-fatal event, described by an NSError object. These events will be grouped and * displayed similarly to crashes. Keep in mind that this method can be expensive. Also, the total number of * NSErrors that can be recorded during your app's life-cycle is limited by a fixed-size circular buffer. If the * buffer is overrun, the oldest data is dropped. Errors are relayed to Crashlytics on a subsequent launch * of your application. * * You can also use the -recordError:withAdditionalUserInfo: to include additional context not represented * by the NSError instance itself. * **/ - (void)recordError:(NSError *)error; - (void)recordError:(NSError *)error withAdditionalUserInfo:(nullable CLS_GENERIC_NSDICTIONARY(NSString *, id) *)userInfo;
https://docs.fabric.io/ios/changelog.html#january-7-2016
历史
这实际上不能如我所料:消息被保存到Crashlytics,但只有在应用程序重新启动后,它才会保存最后一条消息。
到目前为止,这里提到的解决scheme都不行。 使用Crashlytics无法在iOS中跟踪处理的exception。
您可以使用它来logging任何exception
[[Crashlytics sharedInstance] recordCustomExceptionName:@"HandledException" reason:@"Some reason" frameArray:@[]];
在Crashlytics中,您将在崩溃报告中看到它,但是却NON-FATALS
types。
事件,如果不是它的意图使用exceptionlogging在Android处理exception的相同方式。
这在版本3.0.7中可用。
recordCustomExceptionName:原因:frameArray:
此方法可用于在报告中logging单个exception结构。 当您的代码与非本地语言(如Lua,C#或Javascript)交互时,这是特别有用的。 这个调用可能很昂贵,只能在进程终止之前使用。 这个API不打算用来loggingNSException对象。 所有可报告的NSExceptions都会被Crashlytics自动捕获。
我已经通过不同的网站,为这个function支持IOS备用Crashlytics。
我发现的批评是迄今为止最好的.. @迪玛我认为这是Crashlytics ..替代它。
这里有一些有用的链接,将项目整合到你的项目中!
http://docs.crittercism.com/ios/ios.html#logging-handled-exceptions
http://www.raywenderlich.com/34050/overview-of-ios-crash-reporting-tools-part-2
@try { } @catch (NSException *exc) { [Crittercism logHandledException:exc] }
请参阅这些链接,看看它对你有没有用…!
在catch块中使用下面的行来处理自定义捕获的exception
NSUncaughtExceptionHandler *handler = NSGetUncaughtExceptionHandler(); handler(exception);
如iOS所述http://support.crashlytics.com/knowledgebase/articles/222764-can-i-use-a-custom-exception-handler
这将节省您的时间
(错误为NSError,withAdditionalUserInfo:[“User_Id”:0,“User_Name”:“ABC”,“User_Email”:“abc@gmail.com”,“User_Contact”:“789797”])