NAME

Log Handler Example

Creating a PerlLogHandler

Every request phase can be controlled using mod_perl. Here's an example of a PerlLogHandler. The PerlLogHandler is one of the last phases of the request cycle.

This example sends mail when a request is made to the /private section of your web space. A more common use of a PerlLogHandler might be to track hits on a specific set of URLs, or to write logging data to a relational database.

file:My/Notify.pm
------------------------
package My::Notify;
use strict;
use Apache::Constants qw(:common);

use Mail::Send;

sub handler {
    my $r = shift;

    my $email = $r->server->server_admin || return DECLINED;

    my $mail = Mail::Send->new(
        To      => $email,
        Subject => "mod_perl Notification",
    );
    my $file = $r->filename;
    my $fh = $mail->open;
    $fh->print("File '$file' was accessed");
    $fh->close;

    return DECLINED; # let apache write to the lot
}
1; # modules must return true

The httpd.conf setup:

<Location /private>
    SetHandler perl-script
    PerlLogHandler My::Notify
</Location>
« back