使用Objective C读取发布到设备控制台的日志消息
我的iOS应用程序如何从设备控制台日志中读取消息。我想以编程方式阅读这些日志条目(如阅读文件?),选择一些,并通过电子邮件发送给支持。使用Objective C读取发布到设备控制台的日志消息
我知道一个iPhone应用程序,它可以让你查看日志。它的名字是Console。但是,我无法弄清楚他使用了什么类或API。有人建议使用ASL函数完成它,但我不知道它们是什么或它们在哪里被记录。
我也知道使用NSLog的一些替代方法,如NSLogger和CocoaLumberJack,但我们还没有准备好在这个时候实现这些方法。
非常感谢您的帮助!
在Cocoanetics博客This entry有样本代码来访问使用ASL的iOS系统日志(苹果系统记录器)API(man page):
aslmsg q, m;
int i;
const char *key, *val;
q = asl_new(ASL_TYPE_QUERY);
aslresponse r = asl_search(NULL, q);
while (NULL != (m = aslresponse_next(r)))
{
NSMutableDictionary *tmpDict = [NSMutableDictionary dictionary];
for (i = 0; (NULL != (key = asl_key(m, i))); i++)
{
NSString *keyString = [NSString stringWithUTF8String:(char *)key];
val = asl_get(m, key);
NSString *string = [NSString stringWithUTF8String:val];
[tmpDict setObject:string forKey:keyString];
}
NSLog(@"%@", tmpDict);
}
aslresponse_free(r);
请注意,您需要轮询ASL阅读最新消息。上面的代码在iPhone模拟器上运行时也会失败,但在实际设备上运行得很好。
如果您不想与C ASL API对抗,请查看名为ASLogger的此Objective-C包装。
这看起来很完美。谢谢! – 2011-05-27 01:25:47
其实这个代码有问题。在iOS上写入控制台的大部分消息都标记为感性。只有系统应用程序可以读取它们。所以,你最终只能读取你自己的日志。 – 2012-10-16 22:55:43
这里是一个迅速执行,如果有人要寻找一个:
static func systemLogs() -> [[String: String]] {
let q = asl_new(UInt32(ASL_TYPE_QUERY))
var logs = [[String: String]]()
let r = asl_search(nil, q)
var m = asl_next(r)
while m != nil {
var logDict = [String: String]()
var i: UInt32 = 0
while true {
if let key = String.fromCString(asl_key(m, i)) {
let val = String.fromCString(asl_get(m, key))
logDict[key] = val
i++
} else {
break
}
}
m = asl_next(r)
logs.append(logDict)
}
asl_release(r)
return logs
}
谢谢,但我仍然无法捕获由swift的“打印”发送的日志,它只捕获NSLog的任何想法? – Jimmar 2015-10-05 13:58:05
@JiMMaR你将无法捕捉到这些。 Swift的打印完全跳过了Apple的日志记录工具。如果你想让这些日志进入Apple的日志记录工具,可以使用NSLog或者在两者上创建自己的包装。 – 2015-10-05 18:15:45
这很棒,但现在只要我们有一些与iOS 10和新os_log兼容的东西。你不会碰巧有,你会吗? – 2016-10-07 23:49:22
年长人民路建议的工作,直到完美的iOS 9,但不会与iOS 10/XCode8工作。
在iOS10/XCode8,Unified Logging和Activity Tracing中引入了一种新的日志记录方法。
https://developer.apple.com/reference/os/1891852-logging#1682426 https://developer.apple.com/videos/play/wwdc2016/721/
用户此日志记录:
读http://boredzo.org/blog/archives/2008-01-19/next-week-apple-system - 它会给你一个关于整个ASL的好主意。 – Jano 2011-05-26 22:15:55
+1谢谢!我会详细阅读。 – 2011-05-27 00:55:58