【发布时间】:2013-07-17 14:34:04
【问题描述】:
+ (NSArray *)systemLogDictionariesForAppName:(NSString *)appName {
aslmsg q = asl_new(ASL_TYPE_QUERY);
asl_set_query(q, ASL_KEY_SENDER, [appName cStringUsingEncoding:NSASCIIStringEncoding], ASL_QUERY_OP_EQUAL);
aslresponse r = asl_search(NULL, q);
aslmsg m;
uint32_t i;
const char *key, *val;
NSMutableArray *systemLogDictionaries = [NSMutableArray array];
while (NULL != (m = aslresponse_next(r)))
{
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
for (i = 0; (NULL != (key = asl_key(m, i))); i++)
{
val = asl_get(m, key);
NSString *stringKey = [NSString stringWithCString:key encoding:NSUTF8StringEncoding];
NSString *stringVal = [NSString stringWithCString:val encoding:NSUTF8StringEncoding];
[dictionary setObject:stringVal forKey:stringKey];
}
[systemLogDictionaries addObject:dictionary];
}
aslresponse_free(r);
return systemLogDictionaries;
}
以上代码将获取苹果系统日志。问题是,从 Apple 系统日志 (ASL) 中提取所有日志大约需要 8 秒。有什么方法可以优化 asl_set_query 以更快地获取数据或我缺少的任何其他方式。
注意:我们能否创建一个 ASL 查询,该查询需要时间戳,并且我们可以获得更少数量的数据来处理。这将解决我认为的问题。
【问题讨论】:
标签: ios objective-c macos