Wadslog

iPhone SDK ログの出力

Sep 7, 2009

目次

ビルドのモードによってログの出力を切り替える

NSLogの使い方を調べていたら以下のとおりDEBUGモードの時だけログを出力する方法が書いてありました。

NSLog()の置き換え - 強火で進め

最終的には
#define ALog(fmt, ...) NSLog((@"%s \[Line %d\] " fmt), \_\_PRETTY\_FUNCTION\_\_, \_\_LINE\_\_, ##\_\_VA\_ARGS\_\_);

これは元々はiPhone Development Blogの記事から引用していますが、よく読むと正しく以下の部分を定義する必要があると思います。

The Evolution of a Replacement for NSLog | iPhone Development Blog

#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s \[Line %d\] " fmt), \_\_PRETTY\_FUNCTION\_\_, \_\_LINE\_\_, ##\_\_VA\_ARGS\_\_);
#else
#define DLog(...)
#endif

// ALog always displays output regardless of the DEBUG setting
#define ALog(fmt, ...) NSLog((@"%s \[Line %d\] " fmt), \_\_PRETTY\_FUNCTION\_\_, \_\_LINE\_\_, ##\_\_VA\_ARGS\_\_);

DLogはDEBUGが0のときに(RELEASEモード)何も出力せず、それ以外のときにログを出力します。

また、ALogはDEBUGの設定に関わらずログを出力するとあるので、常に出力したいデバッグ情報はALogで出力します。

参考

comments powered by Disqus