【问题标题】:how to get iPhone App Crash Log file from iPhone programmatically如何以编程方式从 iPhone 获取 iPhone 应用程序崩溃日志文件
【发布时间】:2014-03-26 07:21:22
【问题描述】:

有没有办法通过编程方式访问 iphone 崩溃日志文件。我试图编写一个崩溃报告功能,当您在崩溃后启动应用程序时,它会提供将崩溃报告发送到服务器。我找不到如何在应用程序中获取崩溃日志。

【问题讨论】:

标签: ios iphone ios7 crash-log


【解决方案1】:

您可以使用以下逻辑。

aslmsg q, m;
int i;
const char *key, *val;
float how_old = fTime ;
q = asl_new(ASL_TYPE_QUERY);
asl_set_query(q, ASL_KEY_LEVEL, strLoggerLevel ,ASL_QUERY_OP_LESS_EQUAL);
asl_set_query(q, ASL_KEY_FACILITY, [@"YourBundleIdOfAPP" UTF8String] ,ASL_QUERY_OP_EQUAL);

asl_set_query(q, ASL_KEY_TIME, [[NSString stringWithFormat:@"%.f", [[NSDate date] timeIntervalSince1970] - how_old] UTF8String], ASL_QUERY_OP_GREATER_EQUAL);
int goInside=0;
aslresponse r = asl_search(NULL, q);
while (NULL != (m = aslresponse_next(r)))
{
    NSString *cValueToWrite;
    NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];

    for (i = 0; (NULL != (key = asl_key(m, i))); i++)
    {
        //get the only required fields
        if(i==12 || i==10 || i==11 || i==8 || i==9 ||i==3)
        {
            NSString *keyString = [NSString stringWithUTF8String:(char *)key];
            val = asl_get(m, key);

            NSString *string = [NSString stringWithUTF8String:val];
            [tmpDict setObject:string forKey:keyString];
        }
    }

    cValueToWrite=[[NSString alloc]initWithFormat:@"\n--------------[Debug]----------------\nDateTime: %@\nApplication: %@\nInfo: %@",[tmpDict valueForKey:@"CFLog Local Time"],[tmpDict valueForKey:@"Sender"],[tmpDict valueForKey:@"Message"]];
}

strLoggerLevelNSString,它包含您想要的记录器类型,范围最大为 7。

【讨论】:

  • 你能告诉我在你给定的解决方案中用什么代替 fTime,我正在实施它可以解决我的目的吗?
  • 它是一个浮点值,以秒为单位显示时间。意味着你想在 1 小时前登录,然后使用 3600.0
  • ok.thanks...所以我可以用 Debugging(level Name) 代替 strLoggerLevel 来获取崩溃日志?
  • 我用调试器级别 ASL_STRING_DEBUG 和 how_old = 3600.0 尝试了这段代码,但我得到了这个输出:logFile: --------------[Debug]---- ------------ DateTime: (null) Application: (null) Info: (null) It is it working code to get crash logs.?
  • 是的,它对我来说工作正常。我使用相同的代码创建了库。尝试打印 tmpDict。它会给什么。你有没有替换@“YourBundleIdOfAPP”??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-18
  • 2012-10-19
相关资源
最近更新 更多