discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSLog suggestion


From: Maxthon Chan
Subject: Re: NSLog suggestion
Date: Sat, 21 Feb 2015 04:03:51 +0800

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 <richardfrithmacdonald@gmail.com> wrote:

On 20 Feb 2015, at 19:32, Amr Aboelela <amraboelela@gmail.com> 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), 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
Discuss-gnustep@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnustep


reply via email to

[Prev in Thread] Current Thread [Next in Thread]