Or you can roll your own if you like to (as I do, since my code need to be 
ported across OS X and GNUstep and from time to time, iOS even).

Here is what I do:

#ifndef NDEBUG
void _MKLog(const char *, int, const NSString *, …) 
__attribute__((format(NSString, 3, 4));
#define MKLog(fmt, …) _MKLog(__FILE__, __LINE__, fmt, ##__VA_ARGS__)
#endif

And it prints things like this:

2015-02-20 14:15:27.2040+0800 [2024:pthread 0x20c test.m:14]: This is a debug 
message from a unnamed dispatch queue or thread.
2015-02-20 14:15:27.2040+0800 [2024:NSThread thread name test.m:14]: This is a 
debug message from a named thread.
2015-02-20 14:15:27.2040+0800 [2024:dispatch_queue_t queue name test.m:14]: 
This is a debug message from a named dispatch queue.

> On Feb 21, 2015, at 03:48, Richard Frith-Macdonald 
> <[email protected]> wrote:
> 
> On 20 Feb 2015, at 19:32, Amr Aboelela <[email protected] 
> <mailto:[email protected]>> wrote:
>> 
>> NSLogv(NSString* format, va_list args)
>> 
>> ...
>> 
>>            /*prefix = [NSString
>> 
>>                      stringWithFormat: @"%@ %@[%d] ",
>> 
>>                      [[NSCalendarDate calendarDate]
>> 
>>                       descriptionWithCalendarFormat: @"%Y-%m-%d 
>> %H:%M:%S.%F"],
>> 
>>                      [[NSProcessInfo processInfo] processName],
>> 
>>                      pid];*/
>> 
>>            prefix = [NSString
>> 
>>                      stringWithFormat: @"%@ %@[%d-%x] ",
>> 
>>                      [[NSCalendarDate calendarDate] 
>> descriptionWithCalendarFormat: @"%M:%S.%F"],
>> 
>>                      [[NSProcessInfo processInfo] processName],
>> 
>>                      pid, (unsigned int)pthread_self()];
>> 
>> ...
>> 
>> }
>> 
>> 
>> Instead of printing today date and hour which is useless for a developer, 
>> print the current thread id:  (unsigned int)pthread_self()
> 
> Well, the timestamp is highly useful for most people, but perhpas more 
> importantly we try to be compatible with Apple's implementation.
> 
> However, there's a user default called GSLogThread (near the start of the 
> base library documentation ... you can find it online at 
> http://www.gnustep.org/resources/documentation/Developer/Base/Reference/index.html
>  
> <http://www.gnustep.org/resources/documentation/Developer/Base/Reference/index.html>),
>  which you can set to extend the normal log format with a thread ID.  This is 
> quite useful for debugging multithreaded programs.
> 
> In addition, if you look at NSLog() in your local base library documentation, 
> you will find a whole selection of things you can use to customise NSLog() 
> behavior and also support various formas of debug logging.
> 
> 
> _______________________________________________
> Discuss-gnustep mailing list
> [email protected] <mailto:[email protected]>
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep 
> <https://lists.gnu.org/mailman/listinfo/discuss-gnustep>
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to