[Date Prev][Date Next]
Re: LDAP Debug messages & severity levels
Howard Chu writes:
>Hallvard B Furuseth wrote:
>> Not sure how the loglevel and severity level should interact.
>> The most severe messages should be given independently of
>> loglevel, so maybe their macros do not need a loglevel.
>> With the others - log the message if both loglevel and
>> severity level is satisfied? That's inconsistent with severe
>> messages that are logged just due to severity level though.
>> Maybe it'll be easier to decide after the debug messages
>> have been classified by severity.
> I think you're going the right direction. Genuine Error and Warning
> messages should not need any further qualification. It is only
> Info/Debug messages that really need the fine-grain "loglevel"
> differentiators, so they can be selectively turned on and off.
OK. Well, actually I'm not sure about warnings. I certainly appreciate
fine-control warning options in some other programs. But that can wait
in any case: I'd prefer a loglevel argument even in macros that don't
use it at least until the code stabilizes, so a simple s/Warn/Info/ will
be enough to downgrade a message from a severity level which doesn't use
the loglevel to one which does.
> There are some parts of the documentation that state that Statslog is
> always available, even with --disable-debug. I think that doc is now
> wrong, but it reflects an intention that we should probably restore.
> That pretty much means Stats/Info, Warn, and Error are never disabled.
Should the default loglevel be 0 instead of Stats with --disable-debug
- at least in OpenLDAP 2.3? Different defaults from different
configurations can be confusing, but OTOH that will by now be the
smallest change for current installations that use --disable-debug.
>> include/ldap_log.h #defines twelve LDAP_LEVEL_* constants,
>> but they only seem to be used in the unused debug2syslog().
> Left over from NEW_LOGGING ?
Ah, of course. From ldap_log.h revision 1.19 "first try at logging
improvements". Well, they could just as well be left alone for now.
Might need them soon.
A few other points:
Should we take the opportunity to get rid of "too many arguments for
format" warnings? Introduce <Debug,Info,Warn,Err,Statslog><1,2,3,4,5>()
macros that take 1-5 arguments. I believe they'd all be one-liners
calling the same general logging macro. Well, maybe Statslog*() would
keep a separate macro. The old Debug() and Statslog() APIs would also
stay, at least for now.
We could also switch to using Debug/Err/...( SOMELEVEL, ... ) instead
of Debug( LDAP_DEBUG_SOMELEVEL, ...) and have the macros prepend
LDAP_DEBUG_ to SOMELEVEL, as NEW_LOGGING did.
As a practical matter, this change could be introduced behind
#ifdef SEVERITY_LOGGING /* defined when LDAP_DEVEL */
# define Debug(), Info(), Err() etc to do just what Debug() does now
# define them to obey a configurable severity level, and #define all
# except Debug() even when --disable-debug.
That way there should be is no need for a PITA like #ifdef NEW_LOGGING
everywhere in the code, nor a separate CVS branch (which I imagine would
have a lot of conflicts by the time we were ready to merge it into