[Date Prev][Date Next] [Chronological] [Thread] [Top]

RE: slapd logging

Sorry, this was supposed to go to the list, and I just
sent it to Kurt...

What I did for my Java logging was create a class that 
uses a hash map to store the requested logging by mnemonic:

Debug.DirectoryServices true
Debug.Servlet.request true
Debug.Servlet.process true

Anyway, something similar could be done in C.  Just keep
an array of requested logging subsystems.  Instead of
just true/false, an integer level could be maintained.
I think this is complex enough that it should be supported
in the configuration file, with overrides on the command
line.  Something like

Debug  caching=1
Debug  filter=0
Debug  acl=3

(I'm sure -D is taken, but whatever character is available)
slapd -D acl=4 ...

Then the Log prototype would be as you suggest.

Oh, and there's a special subsystem, All that turns on
debugging for all subsystems:  
    Debug all=5
so all subsystems would have a minimum debugging level
of 5 in this case.

> -----Original Message-----
> From: Kurt D. Zeilenga [mailto:Kurt@OpenLDAP.org]
> Sent: Tuesday, September 26, 2000 2:47 PM
> To: openldap-devel@OpenLDAP.org
> Subject: RE: slapd logging
> I'd like to see a well thought out logging design... (and, no,
> I'm not volunteering :-).
> One approach would be to have:
> 	1) a global "level" (e.g. 
> critical,error,notice,info,debug,noise)
> 	2) per subsystem levels (same levels as above) where each
> 	library (lber,ldap,lutil,etc), each backend, plus ACL, schema
> 	etc.
> Each log message would be written like:
> 	Log( LOG_SUBSYS, LOG_LEVEL, "format", ...);
> The check would be:
> 	( level >= global_level || level >= subsys_level[subsys] )
> and would be enabled using:
> 	-l level
> and/or
> 	-l subsys:level
> and/or
> 	-l subsysA,subsysB:levelX;subsysC:levelY;level
> and/or as multiple, combined arguments.
> There are other workable alternatives...
> Kurt