iOS10中的NSLog仅限于1024个字符的字符串。

7
在iOS10中,NSLog被限制在1024个字符内。是否有人知道打印完整字符串的解决方法?

将字符串分割成1024个字符的块,并单独记录每个块。 - Marc B
1
解决方案很好,但似乎难以实现,因为我们使用了大量的日志。特别是服务器响应非常庞大,最好记录没有换行符的JSON。 - Naveen Shan
3个回答

7
尝试使用printf而不是NSLog,例如:
   printf("%s", [string UTF8String]);

它可能有效


NSString *logMessage = [NSString stringWithFormat:@"<复制旧消息>"]; printf("%s",[logMessage UTF8String]); - Naveen Shan

4
我认为这与[iOS 10 / Xcode 8 上设备上的NSLog好像会被截断?为什么?是同一个问题。我在这里也会发表我的答案,以防你想要使用printf

这是一个临时解决方案,因为我认为这是一个错误。

只需在全局头文件中重新定义所有NSLOGprintf即可。

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]);

3

这是一个针对新版Xcode8和Sierra的Swift解决方案...

func Log(_ format:String, _ args:CVarArg...) {
    let output = withVaList(args, { (p) -> NSString in
        NSString(format: format, arguments: p)
    }) as String
    print( output )
}

当然,这种方法不会像我们需要的NSLog一样拥有时间戳、包名和线程信息(包括序列化)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接