在Xamarin.Android+;Visual Studio
对不起,我提出了一个蹩脚而简单的问题,但我没能找到答案。 每次我将内容打印到System.Diagnostics.Debug.WriteLine时,我的消息都会增加三倍:在Xamarin.Android+;Visual Studio,android,xamarin.android,xamarin,visual-studio-debugging,Android,Xamarin.android,Xamarin,Visual Studio Debugging,对不起,我提出了一个蹩脚而简单的问题,但我没能找到答案。 每次我将内容打印到System.Diagnostics.Debug.WriteLine时,我的消息都会增加三倍: System.Diagnostics.Debug.WriteLine("test"); 输出: [0:] test [0:] test 10-22 19:57:13.981 I/mono-stdout( 1026): test 我坚持使用System.Diagnostic.Debug,因为我编写来自UI部分(monod
System.Diagnostics.Debug.WriteLine("test");
输出:
[0:]
test
[0:] test
10-22 19:57:13.981 I/mono-stdout( 1026): test
我坚持使用System.Diagnostic.Debug,因为我编写来自UI部分(monodroid)和业务逻辑(PCL)的消息
有没有办法降低Xamarin.Android的调试噪音水平
谢谢您的建议。您可以改用
Android.Util.Log
,这会大大减少它的使用。它还有不同级别的日志记录,您可以在logcat中进行过滤
- 信息:
Log.Info()
- 调试:
Log.Debug()
- 警告:
Log.Warn()
- 错误:
Log.Error()
- 详细:
Log.Verbose()
WriteLine
,它执行上述所有操作:
Log.WriteLine()
做你自己的小抽象。我们的项目中也存在同样的问题,这个小界面有助于:
public interface ILogger
{
void Write(LogLevel level, String tag, String message);
}
然后,您有每个平台的记录器,例如:
public class AndroidLogger: ILogger
{
public void Write(LogLevel level, string tag, string message)
{
Android.Util.Log.WriteLine(ConvertLogLevel(level), tag, message);
}
}
您将记录器注入iOS/Android项目,甚至可以创建奇特的记录器,例如iOS的漂亮文件记录器:
#if DEBUG
LOG.AddLogger(new TouchFileLogger());
LOG.AddLogger(new ConsoleLogger());
#endif
LOG类是静态的,不需要知道实现,这就是为什么它可以在共享PCL库中轻松使用的原因
希望这会有所帮助,尽管您的问题现在可能已经解决;-) 如果我试图调试PCL库呢。没有Log&Anroid类,但它是monodroid执行上下文。在这种情况下,我将使用IoC进行一些构造函数注入。TinyIoC可以在这里工作,或者如果您使用的是MvvmCross,那么它是内置的。iOS记录器的外观如何
System.Console.WriteLine()
?简单的控制台记录器如下所示:Debug.WriteLine(级别+“”+消息);对于iOS中的持久日志记录,我们将日志保存到一个文件中。看看这个: