On Wed, 9 Jun 2010, Ruediger Pluem wrote:
On 06/06/2010 06:54 PM, s...@apache.org wrote:
Author: sf
Date: Sun Jun  6 16:54:51 2010
New Revision: 951893

URL: http://svn.apache.org/viewvc?rev=951893&view=rev
Log:
- Introduce log levels trace1/.../trace8
- Add macro wrappers for ap_log_*error. On C99, this will save argument
  preparation and function call overhead when a message is not logged
  because of the configured loglevel.
- Introduce per-module loglevel configuration.


 /**
  * ap_log_perror() - log messages which are not related to a particular
@@ -188,10 +288,20 @@ AP_DECLARE(void) ap_log_error(const char
  * simple format string like "%s", followed by the string containing the
  * untrusted data.
  */
-AP_DECLARE(void) ap_log_perror(const char *file, int line, int level,
-                             apr_status_t status, apr_pool_t *p,
-                             const char *fmt, ...)
-                           __attribute__((format(printf,6,7)));
+#if __STDC_VERSION__ >= 199901L && defined(APLOG_MAX_LOGLEVEL)
+/* need additional step to expand APLOG_MARK first */
+#define ap_log_perror(...) ap_log_perror__(__VA_ARGS__)
+#define ap_log_perror__(file, line, mi, level, status, p, ...)            \
+    do { if ((level) <= APLOG_MAX_LOGLEVEL )                              \
+             ap_do_log_perror(file, line, mi, level, status, p,           \
+                             __VA_ARGS__); } while(0)

Why ap_do_log_perror and not ap_log_perror_?

There is no ap_log_perror_ because the pool p does not have a per-module loglevel configuration.

All the other things you pointed out in this mail have been fixed in r953125.

Reply via email to