2014-02-24 117 views
1

我正在调试第三方SDK,它将大量有用信息放入控制台。观察Xcode中的NSLog消息

我曾经在工具提示(针对我们的测试人员)中显示一些消息,我从SDK委托中收到了这些消息。

但委托方法不包括许多细节,有时它变得无奈,否则控制台包含更多有用的信息(特别是如果SDK的日志级别设置为DEBUG_ALL或类似的东西)。

所以,我的问题 - 是可以观察NSLog消息,并以某种方式,当他们被打印到控制台通知?当然,我想有字符串消息作为参数?

我想在设备/模拟器屏幕上显示它,以便测试仪不必运行XCode或查看设备的控制台。

回答

0

我使用iConsole出于同样的目的。这非常有用。

+0

它允许你查看设备上的NSLog消息(不是[iConsole ...])吗? – Injectios

+0

不,您必须重新定向NSLog,使用'frepoen(3)'将日志写入另一个文件,然后修改iConsole.m来读取和写入日志到该文件,但iConsole项目为您提供一个非常好的呈现日志的方式和你必须做的修改是非常小的。 –

+0

我无法访问SDK的源代码,我无法使用它的NSLog – Injectios

0

什么SDK?如果SDK支持CocoaLumberjack,那么我建议安装它,并配置记录器来做你想做的事 - 甚至可以在别的地方路由。

CocoaLumberjack为您提供许多的权力和可配置性,当涉及到日志记录。

+0

某些广告SDKS像AdMob,Mopub等 – Injectios

0

如果您的SDK使用NSLog在控制台中打印细节,则可以使用宏重新定义NSLog

#define NSLog(FORMAT, ...) ShowLogInAlert(FORMAT); 


    void ShowLogInAlert(NSString *format, ...){ 
    //show the log in the alert here. 

    va_list ap; 
    va_start (ap, format); 
    format = [format stringByAppendingString:@"\n"]; 
    NSString *msg = [[NSString alloc] initWithFormat:[NSString stringWithFormat:@"%@",format] arguments:ap]; 
// NSLog(@"%@", msg); 
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:msg message:@"" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; 
    [alert show]; 
    va_end (ap); 

} 
+0

它不是MINE SDK,我无法更改它。我需要一种全球覆盖 – Injectios

+0

尝试。它可能工作。 –

+0

我把它放在“主”,并在那里添加断点,但它不起作用 – Injectios