You are viewing a plain text version of this content. The canonical link for it is here.
Posted to apache-bugdb@apache.org by Helge Oldach <ap...@oldach.net> on 2001/02/03 22:50:38 UTC
mod_proxy/7185: suggested improvement to log modification date for cached files
>Number: 7185
>Category: mod_proxy
>Synopsis: suggested improvement to log modification date for cached files
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: apache
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: unknown
>Arrival-Date: Sat Feb 03 14:00:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator: apache@oldach.net
>Release: 1.3.17
>Organization:
apache
>Environment:
FreeBSD sep.oldach.net 4.2-STABLE FreeBSD 4.2-STABLE #0: Sat Jan 20 13:43:48 CET 2001 toor@sep.oldach.net:/usr/obj/usr/src/sys/HMO i386
>Description:
This patch adds a '%{format}M' configurable log directive similar
to '%{format}t'. It prints into the modification time (r->mtime)
of the request. This is being filled in by mod_proxy with the time
when the cached file (if any) was last touched.
Basically this is a hack to allow to distinguish between requests
served from the cache (time != 0) and requests served from the
net (time == 0). It also delivers a rough estimate of the age of the
cached files that are actually used.
>How-To-Repeat:
>Fix:
--- src/modules/proxy/mod_proxy.c.orig Mon Jan 15 18:05:27 2001
+++ src/modules/proxy/mod_proxy.c Sat Feb 3 21:49:09 2001
@@ -325,8 +325,10 @@
return HTTP_BAD_REQUEST;
rc = ap_proxy_cache_check(r, url, &conf->cache, &cr);
- if (rc != DECLINED)
+ if (rc != DECLINED) {
+ r->mtime = cr->date;
return rc;
+ }
/* If the host doesn't have a domain name, add one and redirect. */
if (conf->domain != NULL) {--- src/modules/standard/mod_log_config.c.orig Mon Jan 15 18:05:44 2001
+++ src/modules/standard/mod_log_config.c Sat Feb 3 21:59:06 2001
@@ -439,6 +439,33 @@
return ap_pstrdup(r->pool, tstr);
}
+static const char *log_request_mtime(request_rec *r, char *a)
+{
+ int timz;
+ struct tm *t;
+ char tstr[MAX_STRING_LEN];
+
+ t = ap_get_gmtoff(&timz);
+ t = localtime(&r->mtime);
+
+ if (a && *a) { /* Custom format */
+ strftime(tstr, MAX_STRING_LEN, a, t);
+ }
+ else { /* CLF format */
+ char sign = (timz < 0 ? '-' : '+');
+
+ if (timz < 0) {
+ timz = -timz;
+ }
+ ap_snprintf(tstr, sizeof(tstr), "[%02d/%s/%d:%02d:%02d:%02d %c%.2d%.2d]",
+ t->tm_mday, ap_month_snames[t->tm_mon], t->tm_year+1900,
+ t->tm_hour, t->tm_min, t->tm_sec,
+ sign, timz / 60, timz % 60);
+ }
+
+ return ap_pstrdup(r->pool, tstr);
+}
+
static const char *log_request_duration(request_rec *r, char *a)
{
return ap_psprintf(r->pool, "%ld", time(NULL) - r->request_time);
@@ -513,6 +540,9 @@
},
{
'T', log_request_duration, 1
+ },
+ {
+ 'M', log_request_mtime, 1
},
{
'r', log_request_line, 1
>Release-Note:
>Audit-Trail:
>Unformatted:
[In order for any reply to be added to the PR database, you need]
[to include <ap...@Apache.Org> in the Cc line and make sure the]
[subject line starts with the report component and number, with ]
[or without any 'Re:' prefixes (such as "general/1098:" or ]
["Re: general/1098:"). If the subject doesn't match this ]
[pattern, your message will be misfiled and ignored. The ]
["apbugs" address is not added to the Cc line of messages from ]
[the database automatically because of the potential for mail ]
[loops. If you do not include this Cc, your reply may be ig- ]
[nored unless you are responding to an explicit request from a ]
[developer. Reply only with text; DO NOT SEND ATTACHMENTS! ]