Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between NSLog and DLog

Can anyone tell me what the difference is between NSLog and DLog?

I found about this DLog when I was looking over this project code: http://code.google.com/p/iphone-socks-proxy/

like image 536
slonkar Avatar asked Sep 11 '25 02:09

slonkar


2 Answers

DLog is a commonly used "Debug NSLog" alternative (just Google for it)

Here is a complete set of Log #define directives (including ULog, a UIAlertView based Logging feature)

// DLog will output like NSLog only when the DEBUG variable is set

#ifdef DEBUG
#   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
#   define DLog(...)
#endif

// ALog will always output like NSLog

#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);

// ULog will show the UIAlertView only when the DEBUG variable is set 

#ifdef DEBUG
#   define ULog(fmt, ...)  { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__]  delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
#else
#   define ULog(...)
#endif

Just put them in your precompile header (.pch) file.

(source: http://overbythere.co.uk/blog/2012/01/alternatives-nslog)

like image 64
Pascal Avatar answered Sep 12 '25 17:09

Pascal


DLog is a macro meant to conditionalize the behavior of NSLog() in debug and release builds. For release builds it will print nothing. NSLog() is meant to print format strings to the console.

Here is its definition for reference:

#ifdef DEBUG
#    define DLog(...) NSLog(__VA_ARGS__)
#else
#    define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
like image 35
CodaFi Avatar answered Sep 12 '25 18:09

CodaFi