I think I am on an anti-conformity kick or something lately. So feel free to take this with a grain of salt. Also, this isn't about a logging API specifically. Just the concept of logging in general.
I was talking to a fellow developer about some problems he was having with his code. So we kicked off Eclipse's debugger and got to, well, debugging. Found the problem. All is well with the world. So we continued talking about how cool debugging is in
IDE's these days. And that eventually led into us questioning the purpose of logging API's. This is what we came up with.
DEBUG - This level is worthless. With local and remote application debugging capabilities this is just extra code that serves no purpose. What I see way too much of are folks using DEBUG level statements when they should just put a comment there.
INFO - This is really only good for things like when the client wants to track activity. So info messages like "DATETIME: User foofoo logged in". I see way too much INFO level debug in API's that have nothing to do with activity tracking. If I care that much about what an API is doing I'll turn on my debugger and step through things.
WARN - We were a bit torn on this one. While we can see a few cases where this might be helpful it doesn't come up very often. The only real use case I can think of right now is warnning message for client activity tracking. But again, not really useful for general application development messages.
ERROR - The only really useful logging message. If the app breaks down and/or there is a serious error/problem, having a log of this error is a good idea. No brainer.
I'm sure most people will disagree with me but it makes for good conversation.