2013-01-18 21 views

回答

2

我使用以下日誌宏的類似的東西。您可以將NO_LOG定義爲您想要從記錄跳過的任何文件(以逗號分隔)。

#define MAKESTRING(__VA_ARGS__) #__VA_ARGS__ 
#define TOSTRING(...) MAKESTRING(__VA_ARGS__) 

static inline void PxReportv(BOOL doLog, char const *file, int line, NSString *prefix, NSString *fmt, va_list argList) { 
    if (doLog) { 
     NSString *fileNameWithExtension = [[NSString stringWithFormat:@"%s", file] lastPathComponent]; 
#ifdef NO_LOG 
     NSString *fileName = [fileNameWithExtension stringByDeletingPathExtension]; 
     char *f = TOSTRING(NO_LOG); 
     NSArray *comps = [[[NSString alloc] initWithFormat:@"%s", f] componentsSeparatedByString:@","]; 
     for (NSString *except in comps) { 
      if ([except isEqualToString:fileName]) { 
       return; 
      } 
     } 
#endif 
     vprintf([[[NSString alloc] initWithFormat:[[NSString alloc] initWithFormat:@"%@ <%@ [%d]> %@\n", prefix, fileNameWithExtension, line, fmt] arguments:argList] cStringUsingEncoding:NSUTF8StringEncoding], NULL); 
    } 
} 

static inline void PxReport(BOOL doLog, char const *file, int line, NSString *prefix, NSString *fmt, ...) { 
    va_list ap; 
    va_start(ap, fmt); 
    PxReportv(doLog, file, line, prefix, fmt, ap); 
    va_end(ap); 
} 

#define PxError(...) PxReport(YES, __FILE__, __LINE__, @"[ERROR]", __VA_ARGS__) 

#ifdef DEBUG 
    #define PxDebug(...) PxReport(YES, __FILE__, __LINE__, @"[DEBUG]", __VA_ARGS__) 
    #define NSLog(...) PxReport(YES, __FILE__, __LINE__, @"", __VA_ARGS__) 
#else 
    #define PxDebug(...) 
    #define NSLog(...) 
#endif 
3

使用

#define NSLog //

它會評論你所有的日誌,如果它是一個內襯

或使用

#define NSLog(...)

+0

如何不是全部,但在特定的類? –

+0

將該#define放入該文件中。不要把它放在.pch文件中 –

+0

贊成反對的原因將不勝感激 –