TTDebug用法

#define TTLOGLEVEL_INFO     5

#define TTLOGLEVEL_WARNING  3

#define TTLOGLEVEL_ERROR    1

 

#ifndef TTMAXLOGLEVEL

  #define TTMAXLOGLEVEL TTLOGLEVEL_WARNING

#endif

 

// The general purpose logger. This ignores logging levels.

#ifdef DEBUG

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

  #define TTDPRINT(xx, ...)  NSLog(@"%s(%d): " xx, __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)

#else

  #define TTDPRINT(xx, ...)  ((void)0)

#endif // #ifdef DEBUG

 

// Prints the current method's name.

#define TTDPRINTMETHODNAME() TTDPRINT(@"%s", __PRETTY_FUNCTION__)

 

// Debug-only assertions.

#ifdef DEBUG

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

 

#import <TargetConditionals.h>

 

#if TARGET_IPHONE_SIMULATOR

 

  int TTIsInDebugger();

  // We leave the __asm__ in this macro so that when a break occurs, we don't have to step out of

  // a "breakInDebugger" function.

  #define TTDASSERT(xx) { if (!(xx)) { TTDPRINT(@"TTDASSERT failed: %s", #xx); \

                                      if (TTIsInDebugger()) { __asm__("int $3\n" : : ); }; } \

                        } ((void)0)

#else

  #define TTDASSERT(xx) { if (!(xx)) { TTDPRINT(@"TTDASSERT failed: %s", #xx); } } ((void)0)

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

#endif // #if TARGET_IPHONE_SIMULATOR

 

#else

  #define TTDASSERT(xx) ((void)0)

#endif // #ifdef DEBUG

 

// Log-level based logging macros.

#if TTLOGLEVEL_ERROR <= TTMAXLOGLEVEL

  #define TTDERROR(xx, ...)  TTDPRINT(xx, ##__VA_ARGS__)

#else

  #define TTDERROR(xx, ...)  ((void)0)

#endif // #if TTLOGLEVEL_ERROR <= TTMAXLOGLEVEL

 

#if TTLOGLEVEL_WARNING <= TTMAXLOGLEVEL

  #define TTDWARNING(xx, ...)  TTDPRINT(xx, ##__VA_ARGS__)

#else

  #define TTDWARNING(xx, ...)  ((void)0)

#endif // #if TTLOGLEVEL_WARNING <= TTMAXLOGLEVEL

 

#if TTLOGLEVEL_INFO <= TTMAXLOGLEVEL

  #define TTDINFO(xx, ...)  TTDPRINT(xx, ##__VA_ARGS__)

#else

  #define TTDINFO(xx, ...)  ((void)0)

#endif // #if TTLOGLEVEL_INFO <= TTMAXLOGLEVEL

 

#ifdef DEBUG

  #define TTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \

                                                  TTDPRINT(xx, ##__VA_ARGS__); \

                                                } \

                                              } ((void)0)

#else

  #define TTDCONDITIONLOG(condition, xx, ...) ((void)0)

#endif // #ifdef DEBUG

 

 

一。log是什么?

three20Debug添加新的特性,可以更加容易的停止在控制台中打印log。可以有选择性的打印某些信息。

 

二。如何让three20打印log?

yourproject->getinfo—>bulid->Gcc_preprocessor_definitions->debug中定义一个DEBUG宏。你不应该在你的release(发布版本)版本中定义这个宏,要不然你的app会被拒绝。

千万不要把调试版本提交给appstore。

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

 

三。如何打印log?

ttdebug引入了一个具有不同优先级的宏。如下:

 

TTDERROR(text, ...)    // Priority level 1

TTDWARNING(text, ...)  // Priority level 3

TTDINFO(text, ...)     // Priority level 5

TTDPRINT(text, ...)    // Always prints

 

三。优先级意味着什么?

如果宏的优先级小于TTMAXLOGEVEL,则就会被打印。所以默认情况下把它设置为3,则优先级别大于3的宏将要不被打印。

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

 

如果TTMAXLOGEVEL没有被设置,则缺省是3,这意味着只有warning和error会被打印。

 

四。有条件的打印

//作者:禚来强 邮箱:zhuolaiqiang@gmail.com

  #define TTDCONDITIONLOG(condition, xx, ...) { if ((condition)) { \

                                                  TTDPRINT(xx, ##__VA_ARGS__); \

                                                } \

                                              } ((void)0)

 

posted on 2011-04-26 19:30  禚来强  阅读(570)  评论(0编辑  收藏  举报

导航