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/
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/
NSLog
is a function that's built into the Foundation framework that Apple provides. I've never heard of DLog
, so I assume that it's a non-standard function that's implemented by the code you're looking at.
DLog
stands for 'Debug Log' (I'm assuming) and is usually a macro that evaluates to nothing if the DEBUG
environment flag is turned off - mostly in shipping apps. –
Echinate 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)
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__)
NSLog
isn't meant to be used to print string literals to console - for that, you can use printf
(or fputs
) and friends if you'd like. The point of NSLog
is to print useful and valid information to the system log. –
Echinate NSLog
is a function that's built into the Foundation framework that Apple provides. I've never heard of DLog
, so I assume that it's a non-standard function that's implemented by the code you're looking at.
DLog
stands for 'Debug Log' (I'm assuming) and is usually a macro that evaluates to nothing if the DEBUG
environment flag is turned off - mostly in shipping apps. –
Echinate Hi, Below the macro cmd for NSLOG replacement file format and also below i mentioned undef Macro as well as
Definition:
#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_
#ifdef _LOG_TO_CONSOLE_
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DLog(format, ...)
#endif
I think an important difference between NSLog and DLog is that NSLog lags the execution of the program (imagine forgetting to remove all NSLog calls in production/publishing), so for debug purposes DLog should be used.
© 2022 - 2024 — McMap. All rights reserved.