A quick replacement to NSLog in your Obj C project
This will need no extra effort at all and changes the way you see your logs in debug area.
How it looks in Debug Area:
Before:
2013-01-29 15:46:24.076 Looptivity[76673:c07] ----2013-01-28 19:02:47 +0000 2013-01-29 15:46:24.076 Looptivity[76673:c07] USER YES 2013-01-29 15:46:24.107 Looptivity[76673:c07] Application become active 2013-01-29 15:46:24.109 Looptivity[76673:c07] Network reachable!
After:
[ MomiLoopAppDelegate.m : 154 ]: ----2013-01-28 19:02:47 +0000 [ MomiLoopAppDelegate.m : 160 ]: USER YES [ MomiLoopAppDelegate.m : 409 ]: Application become active [ MVRemote.m : 102 ]: Network reachable!
Pros:
- Automatically NSLogs are vanished from product build.
- Get rid of long date-time stamp from log.
- Trace logs with a bit more meaningful “Filename : Line-num” format with your log outputs.
Cons:
- In your Debug-area All Output / Target Output should be selected. As it logs with printf function, it will not be visible when Debugger output is selected. Though, I don’t think it is a problem at all, do you?
How to Use:
- Just Append this lines in your project’s .pch file, nothing more! See in your debug area when running code, and see how it is changed!!
Code:
#ifdef __OBJC__ #define __FILE_NAME_ONLY__ [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String] #else #define __FILE_NAME_ONLY__ "" #endif #ifndef OPTIMIZE # define NSLog(...) printf("[%30s : %-4d]: %s\n", __FILE_NAME_ONLY__, __LINE__, [[NSString stringWithFormat:__VA_ARGS__] UTF8String]) #else #define NSLog(...) do {} while (0) #endif
Note:
This fix is collected and mixed up from some of blogs and Stack Overflow answers I cannot remember by now. But thanks to all of them to make my life easier!