酢ろぐ!

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

Xamarin.iOSでログを出力する

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

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

f:id:ch3cooh393:20130321164119p:plain

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

|cs| 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クラスを使用します。

|cs| 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」であるかの違いです。要件によって適切に使い分けて頂ければと思います。

|cs| 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を使ってアプリ開発する際に逆引きとしてお使いください。