Commit 06dd16ad authored by Yann Ylavic's avatar Yann Ylavic
Browse files

Merge r1675533, r1680895, r1680900, r1680942 from trunk.


r1675533 | breser | 2015-04-23 05:12:30 +0200 (Thu, 23 Apr 2015) | 3 lines

mod_log_config: Add %M format to output request duration in milliseconds.



r1680895 | rjung | 2015-05-21 17:07:15 +0200 (Thu, 21 May 2015) | 14 lines

mod_log_config: instead of using the new dedicated
pattern format "%M" for duration milliseconds,
overload the existing "%D" to choose the time precision
("%{s}D" for seconds, "%{ms}D" for milliseconds and
"%{us}D" for microseconds).

The existing %T and %D without precision are kept for
compatibility.

The previously introduced "%M" (r1677187) is removed,
it has not yet been released. Format pattern characters
are rare, so we should only use a new one if an
existing one isn't a good fit.


r1680900 | rjung | 2015-05-21 17:17:50 +0200 (Thu, 21 May 2015) | 2 lines

Fix syntax.


r1680942 | trawick | 2015-05-21 21:20:44 +0200 (Thu, 21 May 2015) | 5 lines

Follow-up to r1680895:

Let %T be the format character which accepts time resolution
arguments.


Reviewed by: ylavic, wrowe, rjung
Backported by: ylavic


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1681047 13f79535-47bb-0310-9956-ffa450edef68
parent 6a376838
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
                                                         -*- coding: utf-8 -*-
Changes with Apache 2.2.30

  *) mod_log_config: Add "%{UNIT}T" format to output request duration in
     seconds, milliseconds or microseconds depending on UNIT ("s", "ms", "us").
     [Ben Reser, Rainer Jung]

  *) In alignment with RFC 7525, the default recommended SSLCipherSuite
     and SSLProxyCipherSuite now exclude RC4 as well as MD5. Also, the
     default recommended SSLProtocol and SSLProxyProtocol directives now
+0 −7
Original line number Diff line number Diff line
@@ -107,13 +107,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
     2.2.x patch: http://people.apache.org/~wrowe/httpd-2.2-utf8-servicename.patch
     +1: wrowe, gsmith

   * mod_log_config: Add new format flag for requestion duration in milliseconds
     trunk patch: http://svn.apache.org/r1675533
     2.2.x patch: http://people.apache.org/~ylavic/httpd-2.2.x-mod_log_config-time_taken_fmt.patch
                  (modulo CHANGES)
     +1: ylavic, wrowe, rjung
     rjung: Please adjust version number in compatibility hint.


PATCHES PROPOSED TO BACKPORT FROM TRUNK:
  [ New proposals should be added at the end of the list ]
+9 −0
Original line number Diff line number Diff line
@@ -184,6 +184,15 @@
    <tr><td><code>%T</code></td>
        <td>The time taken to serve the request, in seconds.</td></tr>

    <tr><td><code>%{<var>UNIT</var>}T</code></td>
        <td>The time taken to serve the request, in a time unit given by
        <code>UNIT</code>. Valid units are <code>ms</code> for milliseconds,
        <code>us</code> for microseconds, and <code>s</code> for seconds.
        Using <code>s</code> gives the same result as <code>%T</code>
        without any format; using <code>us</code> gives the same result
        as <code>%D</code>. Combining <code>%T</code> with a unit is
        available in 2.2.30 and later.</td></tr>

    <tr><td><code>%u</code></td>
        <td>Remote user (from auth; may be bogus if return status
        (<code>%s</code>) is 401)</td></tr>
+22 −7
Original line number Diff line number Diff line
@@ -104,6 +104,9 @@
 * %...{format}t:  The time, in the form given by format, which should
 *                 be in strftime(3) format.
 * %...T:  the time taken to serve the request, in seconds.
 * %...{s}T:  the time taken to serve the request, in seconds, same as %T.
 * %...{us}T:  the time taken to serve the request, in micro seconds, same as %D.
 * %...{ms}T:  the time taken to serve the request, in milliseconds.
 * %...D:  the time taken to serve the request, in micro seconds.
 * %...u:  remote user (from auth; may be bogus if return status (%s) is 401)
 * %...U:  the URL path requested.
@@ -662,18 +665,30 @@ static const char *log_request_time(request_rec *r, char *a)
    }
}

static const char *log_request_duration(request_rec *r, char *a)
{
    apr_time_t duration = apr_time_now() - r->request_time;
    return apr_psprintf(r->pool, "%" APR_TIME_T_FMT, apr_time_sec(duration));
}

static const char *log_request_duration_microseconds(request_rec *r, char *a)
{
    return apr_psprintf(r->pool, "%" APR_TIME_T_FMT,
                        (apr_time_now() - r->request_time));
}

static const char *log_request_duration_scaled(request_rec *r, char *a)
{
    apr_time_t duration = apr_time_now() - r->request_time;
    if (*a == '\0' || !strcasecmp(a, "s")) {
        duration = apr_time_sec(duration);
    }
    else if (!strcasecmp(a, "ms")) {
        duration = apr_time_as_msec(duration);
    }
    else if (!strcasecmp(a, "us")) {
    }
    else {
        /* bogus format */
        return a;
    }
    return apr_psprintf(r->pool, "%" APR_TIME_T_FMT, duration);
}

/* These next two routines use the canonical name:port so that log
 * parsers don't need to duplicate all the vhost parsing crud.
 */
@@ -1574,7 +1589,7 @@ static int log_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
        log_pfn_register(p, "k", log_requests_on_connection, 0);
        log_pfn_register(p, "r", log_request_line, 1);
        log_pfn_register(p, "D", log_request_duration_microseconds, 1);
        log_pfn_register(p, "T", log_request_duration, 1);
        log_pfn_register(p, "T", log_request_duration_scaled, 1);
        log_pfn_register(p, "U", log_request_uri, 1);
        log_pfn_register(p, "s", log_status, 1);
        log_pfn_register(p, "R", log_handler, 1);