4

对不起,蹩脚而简单的问题,但我没有找到答案。每次我向 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 部分(monodroid)和业务逻辑(PCL)编写消息

有没有办法降低 Xamarin.Android 的调试噪音水平?

感谢您的任何建议。

4

2 回答 2

5

做你自己的小抽象。我们的项目也有同样的问题,这个小界面有帮助:

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 库中轻松使用。

希望对您有所帮助,尽管您的问题现在可能已解决;-)

于 2014-07-02T09:28:51.270 回答
2

您可以Android.Util.Log改用,这会大大减少它。它还具有不同级别的日志记录,您可以在 logcat 中进行过滤。

  • 信息:Log.Info()
  • 调试:Log.Debug()
  • 警告:Log.Warn()
  • 错误:Log.Error()
  • 详细:Log.Verbose()

还有一个WriteLine,它可以完成上述所有操作:

Log.WriteLine()
于 2013-10-22T20:13:42.657 回答