Console.WriteLine的替代日志/跟踪?

时间:2011-04-08 18:07:15

标签: iphone xamarin.ios

在我的应用程序中,我正在使用

#if DEBUG
Console.WriteLine(....)
#endif

在很多地方。这是一个临时措施,并且很好,但是我想知道我应该如何正确地做到这一点。有人简单地向我提到了NSLog,但我找不到任何Monotouch和NSLog信息,而且我不确定这些信息是如何可检索的,以便我可以看到发生了什么。

最后,如果有人使用任何特定策略进行崩溃扣除和堆栈追踪抓取,我会全力以赴。

2 个答案:

答案 0 :(得分:5)

你应该利用C#的[条件]支持语言。

您可以将此属性添加到方法中,如下所示:

class Util { 
     [Conditional ("DEBUG")]
     void Log (string msg)
     { 
         Console.WriteLine (msg);
     }
 }

这可以让你编写如下代码:

 Util.Log ("Starting");
 DoSomething ();
 Util.Log ("Ending");

如果定义了符号DEBUG,则上面的代码将编译三行,但如果未定义符号,则编译器将仅为DoSomething生成代码。

这使您可以将调试代码保存在程序中,并通过使用编译器定义来打开/关闭它。

然后将DEBUG添加为DEBUG配置文件的一个定义。相同的技术可以应用于其他配置构建,您可以使用上面的模拟器与设备或调试与AppStore与AdHoc

答案 1 :(得分:3)

NSLog Replacement

上查看此博文