Call me an idiot but I did write custom loggers multiple times in the past.
I did that because I use a lot of trace messages for debugging and that is so unusual that it kills the existing loggers big way.
Nowadays I don't do that anymore, I use the system logger. I do that because I managed to find a way to factorize the logging logic out from the filtering logic.
For example in JavaScript I do
var de = isEnabledTraceXXXXX();
xxx
de&&bug( "Tracing YYYY");
This is ultra efficient and readable thanks to the && progressive operator. For those interested, I described that trick there: http://virteal.com/DebugDarlingWhy not UNIX syslog? It's a powerful, universal logging tool, optimized for performance, and it can take care of concurrency, repeating message "storms", automatic archiving, etc. It can also store messages pertaining to a particular subsystem in a separate file, and that's what most developers want. The problem is that system configuration must be changed for that (presumably when installing your application) and this is not portable across all UNIX systems, AFAIK.
Why not some widely available libraries then, like you said? Most of them are overcomplicated, don't support concurrency or lack some other very basic, simple features you might need in your project.
So, there's always a temptation to write a custom logger because it looks simple in the beginning - just take the string and write it to a file, right? And it is, in fact, not at all simple if you think of concurrency and performance.
I usually take UNIX syslog as a basis and I write my own syslog emulator on Windows whenever I need to maintain portability of the source.
My own personal preference is to use something which shoves your logging out to syslog. Then you get some pretty fine-grained control over what your logging is doing, and it's easy to say, do all of your logging across the network. Unfortunately, taking advantage of the UNIX concept of many small tools working together hasn't really taken root in many programmers' design approaches.
Still, there is no reason I have ever seen for having more than one or wasting time rolling your own unless you need platform independence.