2
0
Fork 0

implement %b (bytes response), %B (bytes response clf) and %X (connection status) in mod_accesslog

personal/stbuehler/wip
Thomas Porzelt 2009-01-07 21:50:07 +01:00
parent 6f69d58fec
commit fe90de88be
1 changed files with 24 additions and 5 deletions

View File

@ -20,6 +20,7 @@
* accesslog.format = "%h %V %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"";
*
* Todo:
* - implement format key for %t: %{format}t
* - implement missing format identifiers
*
* Author:
@ -85,6 +86,7 @@ static const al_format al_format_mapping[] = {
{ 'a', FALSE, AL_FORMAT_REMOTE_ADDR },
{ 'A', FALSE, AL_FORMAT_LOCAL_ADDR },
{ 'b', FALSE, AL_FORMAT_BYTES_RESPONSE },
{ 'B', FALSE, AL_FORMAT_BYTES_RESPONSE_CLF },
{ 'C', FALSE, AL_FORMAT_COOKIE },
{ 'D', FALSE, AL_FORMAT_DURATION_MICROSECONDS },
{ 'e', TRUE, AL_FORMAT_ENV },
@ -103,7 +105,7 @@ static const al_format al_format_mapping[] = {
{ 'U', FALSE, AL_FORMAT_PATH },
{ 'v', FALSE, AL_FORMAT_SERVER_NAME },
{ 'V', FALSE, AL_FORMAT_HOSTNAME },
{ 'T', FALSE, AL_FORMAT_CONNECTION_STATUS },
{ 'X', FALSE, AL_FORMAT_CONNECTION_STATUS },
{ 'I', FALSE, AL_FORMAT_BYTES_IN },
{ 'O', FALSE, AL_FORMAT_BYTES_OUT },
@ -234,6 +236,15 @@ static GString *al_format_log(connection *con, GArray *format) {
case AL_FORMAT_LOCAL_ADDR:
g_string_append_len(str, GSTR_LEN(con->local_addr_str));
break;
case AL_FORMAT_BYTES_RESPONSE:
g_string_append_printf(str, "%jd", vr->out->bytes_out);
break;
case AL_FORMAT_BYTES_RESPONSE_CLF:
if (vr->out->bytes_out)
g_string_append_printf(str, "%jd", vr->out->bytes_out);
else
g_string_append_c(str, '-');
break;
case AL_FORMAT_ENV:
tmp_str = getenv(e->key->str);
if (tmp_str)
@ -265,8 +276,10 @@ static GString *al_format_log(connection *con, GArray *format) {
g_string_append_len(str, GSTR_LEN(req->http_method_str));
g_string_append_c(str, ' ');
al_append_escaped(str, req->uri.orig_path);
g_string_append_c(str, '?');
al_append_escaped(str, req->uri.query);
if (req->uri.query->len) {
g_string_append_c(str, '?');
al_append_escaped(str, req->uri.query);
}
g_string_append_c(str, ' ');
tmp_str = http_version_string(req->http_version, &len);
g_string_append_len(str, tmp_str, len);
@ -290,6 +303,13 @@ static GString *al_format_log(connection *con, GArray *format) {
case AL_FORMAT_HOSTNAME:
g_string_append_len(str, GSTR_LEN(req->uri.host));
break;
case AL_FORMAT_CONNECTION_STATUS:
/* was request completed? */
if (con->in->is_closed && con->raw_out->is_closed && 0 == con->raw_out->length)
g_string_append_c(str, 'X');
else
g_string_append_c(str, con->keep_alive ? '+' : '-');
break;
case AL_FORMAT_BYTES_IN:
g_string_append_printf(str, "%"G_GUINT64_FORMAT, con->stats.bytes_in);
break;
@ -298,14 +318,13 @@ static GString *al_format_log(connection *con, GArray *format) {
break;
default:
/* not implemented:
{ 'b', FALSE, AL_FORMAT_BYTES_RESPONSE }
{ 'C', FALSE, AL_FORMAT_COOKIE }
{ 'D', FALSE, AL_FORMAT_DURATION_MICROSECONDS }
{ 'p', FALSE, AL_FORMAT_LOCAL_PORT },
{ 't', FALSE, AL_FORMAT_TIME },
{ 'T', FALSE, AL_FORMAT_DURATION_SECONDS },
{ 'T', FALSE, AL_FORMAT_CONNECTION_STATUS },
*/
g_string_append_c(str, '?');
break;
}
} else {