PerlLogHandler Foo::DBILogger
####
create table log (
stamp datetime not null,
host varchar(255) not null,
method varchar(8) not null,
url varchar(255) not null,
user varchar(50),
browser varchar(255),
referer varchar(255),
status smallint(3),
bytes int(8)
);
##
##
package Foo::DBILogger;
use Apache::DBI;
use DBI;
use POSIX 'strftime';
use Apache::Constants qw/OK/;
##
##
sub handler {
my $r = shift;
##
##
my $dbh = DBI->connect('dsn', 'user', 'password', 'mysql',
{ RaiseError => 1 })
or die "Can't connect: ", $DBI::errstr;
my $sth = $dbh->prepare_cached(<errstr;
insert into log
(stamp, host, method, url, user, browser, referer, status, bytes)
values (?, ?, ?, ?, ?, ?, ?, ?, ?)
SQL
##
##
$sth->execute(
strftime("%Y-%m-%d %H:%M:%S", localtime),
$r->get_remote_host,
$r->method,
$r->uri,
$r->connection->user,
$r->header_in('Referer'),
$r->header_in('User-agent'),
$r->status,
$r->bytes_sent
);
$sth->finish;
##
##
return OK;
}
1;
##
##
package Foo::DBILogger;
use Apache::DBI;
use DBI;
use POSIX 'strftime';
use Apache::Constants qw/OK/;
sub handler {
my $r = shift;
my $dbh = DBI->connect('dsn', 'user', 'password', 'mysql',
{ RaiseError => 1 })
or die "Can't connect: ", $DBI::errstr;
my $sth = $dbh->prepare_cached(<errstr;
insert into log
(stamp, host, method, url, user, browser, referer, status, bytes)
values (?, ?, ?, ?, ?, ?, ?, ?, ?)
SQL
$sth->execute(
strftime("%Y-%m-%d %H:%M:%S", localtime),
$r->get_remote_host,
$r->method,
$r->uri,
$r->connection->user,
$r->header_in('Referer'),
$r->header_in('User-agent'),
$r->status,
$r->bytes_sent
);
$sth->finish;
return OK;
}
1;
##
##
select host, url
from log
where to_days(now()) - to_days(stamp) <= 1;