Xamarin: ログ出力

概要

XamarinのiOS, Androidアプリでログ出力する方法。

OS共通のAPI

デバッグ用ビルドの場合のみ出力するAPI

System.Diagnostics.Debug.WriteLine("System.Diagnostics.Debug.WriteLine");

デバッグ用とリリース用ビルドで出力するAPI

System.Diagnostics.Trace.WriteLine("System.Diagnostics.Trace.WriteLine");

*デフォルトではデバッグビルドでもシンボルの定義にTRACEが定義されているのでこのAPIによるログが出力される。TRACEを削除すればデバッグビルドでは出力されなくなる。設定はプロジェクトのオプションを開き、コンパイラ>シンボルの定義で確認できる。
参照: Trace クラス (System.Diagnostics) | Microsoft Docs

ビルドタイプに関係無く、標準出力に出力するAPI

System.Console.WriteLine("System.Console.WriteLine");

Android用のAPI

通常のLogクラス(https://developer.android.com/reference/android/util/Log)が以下のAPIで使用できる。

string TAG = "##";
Android.Util.Log.Verbose(TAG, "Android.Util.Log.Verbose");
Android.Util.Log.Info(TAG, "Android.Util.Log.Info");
Android.Util.Log.Debug(TAG, "Android.Util.Log.Debug");
Android.Util.Log.Warn(TAG, "Android.Util.Log.Warn");
Android.Util.Log.Error(TAG, "Android.Util.Log.Error");

Debugビルドでの出力結果

System.Diagnostics.Debug.WriteLine
System.Diagnostics.Trace.WriteLine
System.Console.WriteLine
[##] Android.Util.Log.Verbose
[##] Android.Util.Log.Info
[##] Android.Util.Log.Debug
[##] Android.Util.Log.Warn
[##] Android.Util.Log.Error

Releaseビルドでの出力結果

System.Diagnostics.Debug.WriteLineは出力されていない。

System.Diagnostics.Trace.WriteLine
System.Console.WriteLine
[##] Android.Util.Log.Verbose
[##] Android.Util.Log.Info
[##] Android.Util.Log.Debug
[##] Android.Util.Log.Warn
[##] Android.Util.Log.Error

iOS用のAPI

iOS専用のログ出力APINSLogはXamarinではConsoleクラスで使用されている。

Debugビルドでの出力結果

System.Diagnostics.Debug.WriteLine
System.Diagnostics.Trace.WriteLine
2020-04-19 14:21:29.098980+0900 XamarinTest2.iOS[4920:390843] System.Console.WriteLine

Releaseビルドでの出力結果

iOSのReleaseビルドではアプリケーション出力はされない。