我想使用ASL獲取控制檯日誌。我已經編寫了下面的代碼,並且我在iPhone模擬器中獲得了所有控制檯日誌,但是當我使用iPhone 4.1和iPad時,我從控制檯開始就沒有充分的手段。我嘗試了很多。如何在ios中使用ASL獲取控制檯日誌?
- (NSMutableArray *)getAppLogByApp:(NSString *)appName
{
NSMutableArray *lObjAppLogsPtr = (NSMutableArray *)nil;
LogInfo *lObjLogInfoPtr = (LogInfo *)nil;
aslmsg q, m;
int i;
const char *key, *val, *lAppName;
NSDateFormatter *lObjDateFormatter = [[NSDateFormatter alloc] init];
[lObjDateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
q = asl_new(ASL_TYPE_QUERY);
//also set the log level to fetch if is set to the global variable m_cObjLogMessageLevel
const char* lObjASLLogLevel = [[NSString stringWithFormat:@"%d", m_cLogMessageLevel] UTF8String];
asl_set_query(q, ASL_KEY_LEVEL, lObjASLLogLevel, ASL_QUERY_OP_LESS_EQUAL | ASL_QUERY_OP_NUMERIC);
//asl_set_query(q, ASL_KEY_LEVEL, lObjASLLogLevel, ASL_QUERY_OP_EQUAL | ASL_QUERY_OP_NUMERIC);
//if appName passed to it then fetch the logs for this application only
if ((NSString *)nil != appName && 0 < appName.length)
{
lAppName = [appName UTF8String];
asl_set_query(q, ASL_KEY_SENDER, lAppName, ASL_QUERY_OP_EQUAL);
}
aslresponse r = asl_search(NULL, q);
while (NULL != (m = aslresponse_next(r)))
{
if ((NSMutableArray *)nil == lObjAppLogsPtr)
{
lObjAppLogsPtr = [[NSMutableArray alloc] init];
}
for (i = 0; (NULL != (key = asl_key(m, i))); i++)
{
NSString *keyString = [NSString stringWithUTF8String:(char *)key];
val = asl_get(m, key);
NSString *lObjValString = nil;
if (nil != val)
{
lObjValString = [NSString stringWithUTF8String:val];
}
else
{
//NSLog(@"Val in nil");
lObjValString = @"";
}
if ((LogInfo *)nil == lObjLogInfoPtr)
{
lObjLogInfoPtr = [[LogInfo alloc] init];
}
if(YES == [keyString isEqualToString:@"Level"])
{
lObjLogInfoPtr.m_cObjLevel = lObjValString;
}
else if(YES == [keyString isEqualToString:@"Time"])
{
//convert the time to YYYY-MM-DD HH:MM:SS format
time_t time = strtol(val, NULL, 0);
NSDate *lObjDatePtr = [[NSDate dateWithTimeIntervalSince1970:time] copy];
NSString *lObjDateStringPtr = [lObjDateFormatter stringFromDate:lObjDatePtr];
lObjLogInfoPtr.m_cObjTime = lObjDateStringPtr;
}
else if(YES == [keyString isEqualToString:@"Sender"])
{
lObjLogInfoPtr.m_cObjSender = lObjValString;
}
else if(YES == [keyString isEqualToString:@"Message"])
{
lObjLogInfoPtr.m_cObjMessage = lObjValString;
}
}
//Add the loginfo array
[lObjAppLogsPtr addObject:lObjLogInfoPtr];
//Release the loginfo and set it to nil for further use
[lObjLogInfoPtr release];
lObjLogInfoPtr = (LogInfo *)nil;
}
if (NULL != r)
{
aslresponse_free(r);
}
//free the als msg object
asl_free(q);
[lObjDateFormatter release];
return lObjAppLogsPtr;
}
這裏LogIngo
是NSObject
一個子類。 請幫助我。自一週以來我一直在嘗試。
ASL是指?它是框架嗎? – Gaurav
@guarav:ASL是指提供所有控制檯日誌(如錯誤,warnigs等)的蘋果系統日誌。有關更多詳細信息,請參閱asl.h文件。 –