Revision: 83 Author: matt Date: 2006-08-14 22:38:21 +0000 (Mon, 14 Aug 2006)
Log Message: ----------- A request log (similar to combined log format) Added Paths: ----------- trunk/plugins/request_log Added: trunk/plugins/request_log =================================================================== --- trunk/plugins/request_log 2006-08-13 16:21:07 UTC (rev 82) +++ trunk/plugins/request_log 2006-08-14 22:38:21 UTC (rev 83) @@ -0,0 +1,45 @@ +#!/usr/bin/perl -w + +sub init { + my $self = shift; + + $self->register_config('LogFile', sub { $self->logfile(@_) }); +} + +sub logfile { + my $self = shift; + my $conf = shift; + + my $key = $self->plugin_name . "::log_file"; + if (@_) { + my $value = shift; + open(my $fh, ">>$value") || die "open(>> $value) : $!"; + $conf->notes($key, $fh); + } + $conf->notes($key); +} + +use POSIX qw(strftime); + +sub hook_response_sent { + my ($self, $code) = @_; + + # [07/Aug/2006:21:08:52 +0000] + my $time = strftime("[%d/%b/%Y:%H:%M:%S +0000]", gmtime); + my $line = sprintf("%s %s %s %s \"%s\" %s %s \"%s\" \"%s\"\n", + $self->client->peer_ip_string, + '-', + '-', # TODO - get username out of headers_in maybe? + $time, + $self->client->headers_in->request_line, + $self->client->headers_out->response_code, + '-', # TODO - get bytes sent + $self->client->headers_in->header('Referer') || '-', + $self->client->headers_in->header('User-Agent') || '-', + ); + + my $logfile = $self->logfile($self->config) || die "No LogFile configured"; + syswrite($logfile, $line) || die "Unable to write to logfile: $!"; + + return DECLINED; +}