2014-03-26 14 views
2

프로그래밍 방식으로 iphone 충돌 로그 파일에 액세스하는 방법이 있습니까? 충돌 후 앱을 실행할 때 충돌 보고서를 서버에 보내도록 제안하는 오류 보고서 기능을 작성하려고합니다. 앱 내에서 오류 로그를 가져 오는 방법을 찾을 수 없습니다.iPhone에서 iPhone 앱 크래시 로그 파일을 프로그래밍 방식으로 가져 오는 방법

+0

비슷한 질문에 대한 답변 중 하나를 7 개까지 범위를하는 원하는 로거 유형을 보유하고있는 NSString입니다 : http://stackoverflow.com/questions/4737701/get-previous-run-crash-logs-on-iphone? rq = 1 – Christian

+0

이것을 확인하면 도움이 될 수 있습니다. http://stackoverflow.com/questions/9715127/programmatically-getting-crash-reports-inside- -ios-app –

+0

@Christian thanks.actually 내 자신의 디버거 라이브러리를 만들고 있으므로 다른 라이브러리 나 프레임 워크를 사용하여 확인하고 싶지는 않습니다. – Charlie

답변

2

같은 로직을 사용할 수 있습니다.

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"]]; 
} 

strLoggerLevel 당신이 당신을 도와 아마도

+0

당신은 주어진 솔루션에서 fTime 대신에 무엇을 사용해야하는지 말해 주시겠습니까? 이것을 구현하면 제 목적을 해결할 수 있습니까? – Charlie

+0

시간을 초 단위로 나타내는 부동 소수점 값입니다. 당신이 1 시간 전에 로그를 원한다면 3600.0 – svrushal

+0

ok.thanks ... 그래서 내가 충돌 로그를 얻기위한 strLoggerLevel 대신 디버깅 (수준 이름)을 넣을 수 있습니까? – Charlie