+ (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 System Log(ASL)からすべてのログを取得するのに約8秒かかることです。 asl_set_queryを最適化してデータを高速に取得する方法や、欠落している方法がありますか?リンゴシステムログを最適化する
注:タイムスタンプを取るASLクエリを作成できますか?処理するデータの数を減らすことができます。これは私が思う問題を解決します。
私はすでにこの投稿を見て、試してみましたが、私の場合は助けになりませんでした。しかし、あなたの答えに感謝します。 – AAV
私のメモを確認してください – AAV
@AmitVyawahare私はタイムスタンプを回答に追加しました。 – tttthomasssss