我想从iOS 10读取控制台日志

kha*_*led 8 ios10

我正在使用此代码但由于更改了与Logging System相关的所有API,因此它不再适用于iOS 10.

+ (NSString *)getConsoleLog {
NSString *consoleLog = @"";
char fdate[24];

NSString *myPID = [NSString stringWithFormat:@"%d", getpid()];
aslmsg query, msg;
query = asl_new(ASL_TYPE_QUERY);
asl_set_query(query, ASL_KEY_PID, myPID.UTF8String, ASL_QUERY_OP_EQUAL);
aslresponse r = asl_search(NULL, query);

while ((msg = aslresponse_next(r))) {
    NSString *secondsString = [NSString stringWithFormat:@"%s", asl_get(msg, ASL_KEY_TIME)];
    NSString *nanoSecondsString = [NSString stringWithFormat:@"%s", asl_get(msg, ASL_KEY_TIME_NSEC)];

    NSTimeInterval seconds = [secondsString doubleValue];
    NSTimeInterval nanoSeconds = [nanoSecondsString doubleValue];
    NSTimeInterval msgTime = seconds + nanoSeconds / NSEC_PER_SEC;

    time_t timestamp = (time_t)msgTime;
    struct tm *lt = localtime(&timestamp);
    strftime(fdate, 24, "%Y-%m-%d %T", lt);

    consoleLog = [consoleLog stringByAppendingFormat:@"%s.%03d %@\n", fdate, (int)(1000.0 * (msgTime - floor(msgTime))), [NSString stringWithFormat:@"%s", asl_get(msg, ASL_KEY_MSG)]];
}

aslresponse_free(r);
asl_free(query);

return consoleLog; }
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

Rob*_*ght 1

从 iOS 10 开始,NSLog重定向到新的日志系统,并且没有搜索 API。

来自 WWDC 2016 会议 721 - 统一日志记录和活动跟踪
“...所有旧版 API、NSLog、asl 日志、消息系统日志,所有这些都将被重定向到新系统。...但超出了-box 如果您只是使用新系统进行构建,那么它将全部定向到新的日志记录架构中。”

时间 41:47 “首先,所有 ASL 日志记录 API 现在都被这些新 API 取代,因此,那些旧 API 已被弃用。不过,有一个有趣的边缘情况。用于搜索日志数据的新 API 不会出现在此版本中公开。这意味着没有与 asl 搜索功能等效的功能。如果您的系统中绝对依赖 asl 搜索,这可能是等待采用新日志系统的一个原因。还有一些 API正在被弃用的活动。”