+
+#define HTTP_LOG_WRITE(for, type, header) \
+ HTTP_LOG_WRITE_EX(for, type, header); \
+ HTTP_LOG_WRITE_EX(composite, type, header);
+
+#define HTTP_LOG_WRITE_EX(for, type, header) \
+ if (HTTP_G(log).##for && strlen(HTTP_G(log).##for)) { \
+ php_stream *log = php_stream_open_wrapper(HTTP_G(log).##for, "ab", REPORT_ERRORS|ENFORCE_SAFE_MODE, NULL); \
+ \
+ if (log) { \
+ php_stream_printf(log TSRMLS_CC, "%s [%12s] %32s <%s>%s", datetime, type, header, SG(request_info).request_uri, PHP_EOL); \
+ php_stream_close(log); \
+ } \
+ \
+ }
+ switch (status)
+ {
+ case 301: HTTP_LOG_WRITE(redirect, "301-REDIRECT", header); break;
+ case 302: HTTP_LOG_WRITE(redirect, "302-REDIRECT", header); break;
+ case 304: HTTP_LOG_WRITE(cache, "304-CACHE", header); break;
+ case 401: HTTP_LOG_WRITE(auth, "401-AUTH", header); break;
+ case 403: HTTP_LOG_WRITE(auth, "403-AUTH", header); break;
+ case 405: HTTP_LOG_WRITE(allowed_methods, "405-ALLOWED", header); break;
+ }
+ STR_FREE(header);
+ STR_FREE(body);