NSLogger – a flexible logging tool for OS X and iOS
github.com
github.com
"Objective-C classes must be named uniquely not only within the code that you’re writing in a project, but also across any frameworks or bundles you might be including. As an example, you should avoid using generic class names like ViewController or TextParser because it’s possible a framework you include in your app may fail to follow conventions and create classes with the same names.
In order to keep class names unique, the convention is to use prefixes on all classes. You’ll have noticed that Cocoa and Cocoa Touch class names typically start either with NS or UI. Two-letter prefixes like these are reserved by Apple for use in framework classes...
Your own classes should use three letter prefixes. These might relate to a combination of your company name and your app name, or even a specific component within your app. As an example, if your company were called Whispering Oak, and you were developing a game called Zebra Surprise, you might choose WZS or WOZ as your class prefix."
http://developer.apple.com/library/ios/#documentation/cocoa/...
In practice many people use two letter prefixes for their classes, you should use a prefix with your classes!
The project looks great, I've been wishing for a more comprehensive logging system with filtering built in for a while now. Thanks!
If you're writing a library, you really need to prefix absolutely every last stupid symbol, right down to the header include guards. If you don't, even if they don't end up conflicting with something, you'll have people like me moaning about it. (But I don't moan about it because it's never caused me a problem in the past.)
Looks like a neat library though!
Examples: NLogger, CNLogger (Cocoa Network Logger), etc
Here are some (hopefully) constructive comments:
- As others have mentioned, change the NS prefix. Only Apple should be using that.
- The API is not canonical looking Objective-C/Cocoa. It looks like the programmer has a Windows/C++ background
- I only took a quick look but I didn't see logging macros that conditionally compile out logging for release builds
- Internally the logger uses pthreads. This is going to make it difficult on a client that uses Grand Central Dispatch to reason about code when they are debugging something. Consider using queues and operations rather than firing up worker threads. Take a look at CocoaLumberjack for their approach
- Create a Cocoapod to spur adoption
I read the .NET Framework Design Guidelines back when I was doing .NET and it was an excellent how to guide on writing APIs that behaved and felt like they were part of the BCL. Something like that for Objective-C and Cocoa would be a boon.
I would agree, though, to avoid the "NS*" prefix, but that's been spelled out in a different thread.
Not too difficult to get it wired up with papertrailapp.com either - That combo makes it VERY handy
You can actually use CocoaLumberjack with NSLogger's Desktop Viewer though, by adding NSLogger as an adaptor[0], but you're pretty much stuck at the same issue of setting up less-than-trivial conditionals for compiling out the library and adaptor when building release versions. Not a huge issue in itself, but it doesn't lend itself for writing trivial applications.
[0]: https://github.com/steipete/NSLogger-CocoaLumberjack-connect...