2013-06-21 21 views
7

Tôi đang sử dụng MvvmCross. Trong thư viện, tôi thấy cách sử dụng phương thức Mvx.Trace, nhưng không có đầu ra cho cửa sổ giao diện điều khiển/đầu ra. Cách sử dụng?Sử dụng MvvmCross Mvx.Trace

p.s. Tôi đã đặt hằng số trình biên dịch Trace = true

Cảm ơn.

Trả lời

21

MvvmCross DebugTrace là tất cả chuyển qua một thực hiện singleton của IMvxTrace

Mỗi nền tảng cung cấp triển khai khác nhau về điều này:

  • nền tảng Windows sử dụng Debug dấu vết (vì Trace chính nó là không có sẵn trên tất cả Windows nền tảng)
  • Android sử dụng nhật ký kép của cả hai số Debug và Android log
  • iOS sử dụng một bản ghi kép của cả Debug và iOS Console

này làm việc tốt trong các phiên bản trước đó của MvvmCross, đặc biệt là nơi những người liên quan trực tiếp tới mã nguồn MvvmCross và như vậy có thể gắn trực tiếp vào một trong hai gỡ lỗi hoặc phát hành MvvmCross nhị phân.

Tuy nhiên ... vì mọi người hiện đang sử dụng phiên bản Binaries phát hành từ Nuget - trong đó Debug tất nhiên được biên soạn, điều này thường khiến mọi người hỏi "Cách sử dụng?"

Cách dễ nhất là để bạn ghi đè quá trình khởi tạo IMvxTrace trong lớp học Setup của mình.

này rất dễ dàng để làm - ví dụ .:

protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); } 

nơi MyDebugTrace là một cái gì đó như:

public class MyDebugTrace : IMvxTrace 
{ 
    public void Trace(MvxTraceLevel level, string tag, Func<string> message) 
    { 
     Debug.WriteLine(tag + ":" + level + ":" + message()); 
    } 

    public void Trace(MvxTraceLevel level, string tag, string message) 
    { 
     Debug.WriteLine(tag + ":" + level + ":" + message); 
    } 

    public void Trace(MvxTraceLevel level, string tag, string message, params object[] args) 
    { 
     try 
     { 
      Debug.WriteLine(string.Format(tag + ":" + level + ":" + message, args)); 
     } 
     catch (FormatException) 
     { 
      Trace(MvxTraceLevel.Error, tag, "Exception during trace of {0} {1} {2}", level, message); 
     } 
    } 
} 

Nếu bạn muốn bao gồm triển khai khác nhau cho debug/release; nếu bạn muốn bật/tắt tính năng này khi đang chạy; nếu bạn muốn lọc theo số MvxTraceLevel hoặc tag; hoặc nếu bạn muốn sử dụng một số công cụ ghi nhật ký của bên thứ ba thì việc này cũng dễ dàng thực hiện bằng cách sử dụng C# đơn giản trên mỗi nền tảng.

+0

Như thường lệ: câu trả lời nhanh và chi tiết từ Stuart. Cảm ơn! –

+4

Xamarin Android: Thay vì nhìn vào cửa sổ đầu ra tiêu chuẩn VS , hãy vào Xem \ Đăng nhập thiết bị Windows \ Android khác. Bạn có thể lọc theo mvx để chỉ xem các dấu vết ứng dụng của mình. http: //docs.xamarin.com/hướng dẫn/android/triển khai, _testing, _and_metrics/android_debug_log –

4

Chỉ cần nhấn một sự cố trên iOS với giải pháp hiện tại do Stuart cung cấp.

Chạy phiên gỡ lỗi trong VS bằng MvxTrace sử dụng Debug.WriteLine có thể cực kỳ chậm tùy thuộc vào mức độ ghi nhật ký ứng dụng của bạn. Tương tự cho Trace.WriteLinte. Thay vào đó hãy sử dụng Console.WriteLine (như MvvmCross MvxDebugTrace) không bị ảnh hưởng.

Xem mục lỗi Xamarin này để biết thêm chi tiết về "lỗi": https://bugzilla.xamarin.com/show_bug.cgi?id=13538#c4