酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Xamarin.iOSでログを出力する

iOSアプリケーション開発で必ず使うと行っても過言ではない関数のひとつにNSLog関数があります。(printf関数のように)変数の値や実行されているメソッド名、ファイル名をコンソールに出力してデバッグに利用します。

Xamarin.iOSでログを出力させてみましょう。ここでは、Xcode上でUIButtonを2つ配置しました。それぞれ、buttonLog、buttonDebugに接続しています。

f:id:ch3cooh393:20130321164119p:plain

上のボタンをタップするとoutputLog1メソッドが実行されて、下のボタンをタップするとoutputLog2メソッドが実行されます。

public override void ViewDidLoad ()
{
	base.ViewDidLoad ();
			 
	buttonLog.TouchUpInside += (object sender, EventArgs e) => outputLog1();
	buttonDebug.TouchUpInside += (object sender, EventArgs e) => outputLog2();
}

Console.WriteLineメソッドを使ってログを出力する

変数をコンソールへ出力します。英数字のみの文字列、日本語の文字列、int型の数字、float型の数字を順番に出力します。コンソールへ出力するにはConsoleクラスを使用します。

private void outputLog1()
{ 
	Console.WriteLine("called outputLog1.");

	var strValue1 = "I'm ch3cooh";
	Console.WriteLine(strValue1);

	var strValue2 = "酢酸だよー "; 
	Console.WriteLine(strValue2);

	var intValue = 393;
	Console.WriteLine(intValue); 

	var floatValue = 393.339;
	Console.WriteLine(floatValue); 
}

現在(Xamarin Studio 4.0.2)、Mac版のXamarin Studioでは日本語入力が出来ませんが、別のエディタで文字を打ってコピペした日本語を出力したところ、コンソールには下図のようにきちんと日本語も出力されました。

f:id:ch3cooh393:20130321164126p:plain

Debug.WriteLineメソッドを使ってログを出力する

ログを出力する用途は、開発者がデバッグ目的で使用するケースが主だと思います。

Consoleクラスで出力すると、通常のWindowsアプリケーションと同じようにReleaseビルドでもログが出力されてしまいます。ログを沢山出力しすぎると、アプリケーションのパフォーマンスに影響が出てしまいますので、Debugビルドのみでログを出力させるクラスとして、System.Diagnostics名前空間にDebugクラスが用意されています。ここではDebugクラスを利用してログを出力してみましょう。

前述したConsole.WriteLineメソッドを使った場合との違いは、クラス名が「Console」であるか「Debug」であるかの違いです。要件によって適切に使い分けて頂ければと思います。

private void outputLog2()
{ 
	Console.WriteLine("called outputLog2.");

	var strValue1 = "I'm ch3cooh";
	Debug.WriteLine(strValue1);
			
	var strValue2 = "酢酸だよー "; 
	Debug.WriteLine(strValue2);
			
	var intValue = 393;
	Debug.WriteLine(intValue); 
			
	var floatValue = 393.339;
	Debug.WriteLine(floatValue); 
} 

Debugビルドの場合は、下図のように出力されます。outputLog1とoutputLog2のログが両方とも出力されているのがわかります。

f:id:ch3cooh393:20130321164031p:plain

Releaseビルドの場合は、下図のように出力されます。こちらは、outputLog1のログのみが出力されているのがわかります。

f:id:ch3cooh393:20130321164022p:plain

Releaseビルド時も出力させたいログにはConsoleクラスを使うと良いでしょう。

サンプルプロジェクト

サンプルプロジェクトをGitHubで公開しています。

003_LogSample

関連記事

Xamarin.iOSを使ってアプリ開発する際に逆引きとしてお使いください。