On Monday 28 December 2009, Paul Querna wrote: > > You describe the internal arg processing. Keep in mind that fn > > args aren't conditionally processed, they must be created before > > being passed to the function. If we can dodge that with a module > > query 'is mod_foo at loglevel debug here?' then we can optimize > > this considerably. > > Yes, see the implementation of the Noit Logger which I linked to, > it uses a Macro to check if a logger is enabled, so you don't have > the function arg prep/frame overhead if a logger isn't enabled. >
This would also make it possible to define the macro in a way that disables debug logging at compile time, just as Bill wanted. However, the way reconoiter does it requires variadic macros (http://en.wikipedia.org/wiki/Variadic_macro): #define APLOG(file, line, loglevel, server, ...) \ do { if (server->loglevel >= loglevel) \ ap_log_error(file, line, loglevel, server, __VA_ARGS__) \ } while (0) But variadic macros are only part of C99. Is it ok to drop support for older, pre-C99 compilers in httpd? Cheers, Stefan
