Mik*_*hez 6 cocoa-touch objective-c ios lumberjack
首先,我一直在阅读有关CocoaLumberjack的一些主题,但我无法找到这个问题的解决方案:
我正在使用CocoaLumberjack登录我的应用程序.但我也想记录应用程序崩溃.
我试过这个:
void uncaughtExceptionHandler(NSException *exception) {
DDLogError(@"CRASH: %@", exception);
DDLogError(@"Stack Trace: %@", [exception callStackSymbols]);
// Internal error reporting
// Send log to SOA
}
Run Code Online (Sandbox Code Playgroud)
但我在appDelegate中收到此错误,在其他地方效果很好:
Use of undeclared identifier '_cmd'; did you mean 'dcmd'?
还有另一种方法吗?
NSG*_*God 11
_cmd是当前选择器或正在调用的Objective-C方法的快捷方式.例如,在实现这样的方法的类中:
@implementation MDAppController
- (void)applicationWillFinishLaunching:(NSNotification *)notification {
NSLog(@"[%@ %@]", NSStringFromClass([self class]),
NSStringFromSelector(_cmd));
}
@end
Run Code Online (Sandbox Code Playgroud)
它会打印出来:
[MDAppController applicationWillFinishLaunching:]
您在尝试使用DDLogError()该uncaughtExceptionHandler()函数时遇到问题,因为它是C函数而不是Objective-C方法,因此_cmd未定义.
您应该使用DDLogCError()而不是DDLogError(),因为前者旨在用于C函数而不是Objective-C方法.
在C函数中没有隐藏self,没有隐藏_cmd,但从不担心......
有一系列日志记录功能:
#define DDLogCError(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_ERROR, ddLogLevel, LOG_FLAG_ERROR, 0, frmt, ##__VA_ARGS__)
#define DDLogCWarn(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_WARN, ddLogLevel, LOG_FLAG_WARN, 0, frmt, ##__VA_ARGS__)
#define DDLogCInfo(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_INFO, ddLogLevel, LOG_FLAG_INFO, 0, frmt, ##__VA_ARGS__)
#define DDLogCVerbose(frmt, ...) LOG_C_MAYBE(LOG_ASYNC_VERBOSE, ddLogLevel, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)
类似于NSAssertvsNSCAssert
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |