iOSアプリ開発でログにクラス名とメソッド名を出力する方法
iOSアプリ開発でログを出力する場合「NSLog」を使用するが、「NSLog」の出力には出力したクラス名やメソッド名が含まれない。
これだとログに出力する文言に気を使っておかなければ、不具合箇所を特定するのに時間がかかることがある。
今回はログにクラス名とメソッド名を出力する方法を紹介する。
<通常のNSLogサンプルコード>
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"おおおおお"); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
<出力結果>
2014-11-27 20:18:58.787 LogSample[10128:65319] おおおおお
<今回紹介する方法の出力結果>
2014-11-27 20:18:58.787 LogSample[10128:65319] -[ViewController viewDidLoad] おおおおお
[ ]内を見る事で「ViewController」クラスの「viewDidLoad」メソッドから出力されたログである事が明確に分かる様になる。
<方法概要>
PCHファイル(<プロジェクト名-Prefix.pch>)に拡張したログを定義する。
(注意)
PCHファイルはXcode6から自動で生成されなくなった。
手動で作成する方法は「Xcode6でPCHファイルを追加する方法」を参照のこと。
<方法詳細>
プロジェクトツリー上からPCHファイル(<プロジェクト名-Prefix.pch>)を選択し表示させる。
表示したファイル内に下記の定義を追加する。
#define ExLog(format, ...) NSLog((@"%s: "format), __PRETTY_FUNCTION__, ##__VA_ARGS__)
解説:
「ExLog」という識別子をNSLogを拡張して定義している。
「__PRETTY_FUNCTION__」がクラス名・メソッド名を意味し、「%s」の箇所に出力される様に設定している。
<使用方法>
ログを出力する際は、「NSLog」ではなく、「ExLog」を使用する。
サンプルコードを下記に示す。
@implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ExLog(@"おおおおお"); //↑ポイント(「NSLog」ではなく新たに定義した「ExLog」を使用) } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end
<出力結果>
2014-11-27 20:38:04.857 LogSample[10963:71688] -[ViewController viewDidLoad]: おおおおお
Enjoy Programing!!
<関連記事>
iOSアプリ開発でログにクラス名とメソッド名を出力する方法(本記事)
iOSアプリ開発でログにログレベルを導入する方法
iOSアプリ開発でNSErrorの情報を出力する拡張NSLogを定義する方法
<お勧め書籍>