+ (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;
}
Sopra il codice verrà visualizzato il registro del sistema Apple. Il problema è che ci vogliono circa 8 secondi per prelevare tutti i log da Apple System Log (ASL). C'è un modo per ottimizzare asl_set_query per ottenere i dati più velocemente o in qualsiasi altro modo che mi manca.Ottimizza i registri del sistema Apple
Nota: è possibile creare una query ASL che richiederà un timestamp e sarà possibile ottenere un numero inferiore di dati da elaborare. Questo risolverà il problema che penso.
Ho già visto questo post e ho provato ma non è stato di grande aiuto nel mio caso. Ma grazie per la tua risposta. – AAV
Si prega di controllare la mia nota – AAV
@AmitVyawahare Ho aggiunto la data/ora di interrogazione alla risposta, fammi sapere se funziona per voi. – tttthomasssss