Customized Logging

Send E-mail when a particular page is hit.

Configuration Entry

<Location /~lstein>
   PerlLogHandler Apache::LogMail
   PerlSetVar mailto lstein
</Location>

Script III.6.1: Apache::LogMail

 package Apache::LogMail;
 # file: Apache/LogMail.pm
 use Apache::Constants ':common';

 sub handler {
     my $r = shift;
     my $mailto = $r->dir_config('mailto');
     return DECLINED unless $mailto
     my $request = $r->the_request;
     my $uri = $r->uri;
     my $agent = $r->header_in("User-agent");
     my $bytes = $r->bytes_sent;
     my $remote = $r->get_remote_host;
     my $status = $r->status_line;
     my $date = localtime;
     unless (open (MAIL,"|/usr/lib/sendmail -oi -t")) {
        $r->log_error("Couldn't open mail: $!");
        return DECLINED;
     }
     print MAIL <<END;
 To: $mailto
 From: Mod Perl <webmaster>
 Subject: Somebody looked at $uri

 At $date, a user at $remote looked at
 $uri using the
 $agent browser.  

 The request was $request, 
 which returned a code of $status.  

 $bytes bytes were transferred.
 END
     close MAIL;
     return OK;
 }
 1;

What It Looks Like

http://localhost/~lstein/test_document.html
<< Previous
Contents >> Next >>

Lincoln D. Stein, lstein@cshl.org
Cold Spring Harbor Laboratory
Last modified: Mon Aug 17 10:50:16 EDT 1998