2013-06-21 16 views
7

私はMvvmCrossを使用しています。 ライブラリでMvx.Traceメソッドの使用法がわかりますが、コンソール/出力ウィンドウへの出力はありません。 使い方は?MvvmCross Mvx.Trace usage

p.s.コンパイラ定数Trace = trueを設定しました。

ありがとうございました。

答えて

21

MvvmCross DebugTraceはすべてIMvxTrace

のシングルトンの実装を経由してルーティングされ、各プラットフォームには、このの異なる実装を提供します。

  • Trace自体は、すべてのWindows上で使用できないため、Windowsプラットフォームは、(Debugトレースを使用プラットフォーム)
  • Androidは、DebugとAndroidのデュアルログを使用します。log
  • iOSの両方のDebugとiOSのデュアルログを使用していますConsoleこれは、人々がMvvmCrossをどちらかのデバッグに直接結合するか、または解放することができるようにMvvmCrossのソースコードに直接リンクし、特にMvvmCrossの以前のバージョンでうまく

バイナリ。

しかし、人々は現在、ヌゲットのリリースバイナリを使用しています - Debugはもちろんコンパイルされていますが、これはしばしば人々に「どのように使用するか?

最も簡単な方法は、SetupクラスのIMvxTraceの初期化をオーバーライドすることです。

これを行うのは簡単である - 例えば:

MyDebugTraceのようなものである
protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); } 

:あなたは、デバッグ/リリースの異なる実装を含めるしたい場合

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); 
     } 
    } 
} 

。実行時にこれをオン/オフに切り替えたい場合は、 MvxTraceLevelまたはtagをフィルタリングする場合は、また、サードパーティのロギングエンジンを使用する場合は、各プラットフォームで簡単なC#を使用するのも簡単です。

+0

いつものように:スチュアートから、高速かつ詳細な回答。ありがとう! –

+4

Xamarin Android:標準のVS出力ウィンドウを見る代わりに、 View \ Other Windows \ Androidデバイスロギングに行きます。 mvxでフィルタリングすると、アプリのトレースのみを表示できます。 http://docs.xamarin。com/guides/android/deployment、_testing、_and_metrics/android_debug_log –

4

スチュアートが提供している現在のソリューションでは、iOSの問題にぶつかります。

Debug.WriteLineを使用してMvxTraceを使用してVSでデバッグセッションを実行すると、アプリのログ記録の冗長度によって処理が非常に遅くなることがあります。 Trace.WriteLinteと同じです。 影響を受けていない代わりにConsole.WriteLine(MvvmCross MvxDebugTraceと同じ)を使用してください。

は「より多くの」詳細については、このXamarinのバグの項目を参照してください:https://bugzilla.xamarin.com/show_bug.cgi?id=13538#c4