Adam Prime wrote:
You should package that up and put it on CPAN.
Attached is a version that works on mod_perl 1. -- Michael Peters Plus Three, LP
package Apache::Trace; use strict; use Apache::Log(); use Apache::Constants ':common'; our @Phases = qw( PerlPostReadRequestHandler PerlTransHandler PerlMapToStorageHandler PerlHeaderParserHandler PerlAccessHandler PerlAuthenHandler PerlAuthzHandler PerlTypeHandler PerlFixupHandler PerlResponseHandler PerlLogHandler PerlCleanupHandler ); sub handler($$) { my ($pkg_name, $r) = @_; _add_http_phase_tracers($r); DECLINED; } sub _add_http_phase_tracers { my $r = shift; for (@Phases) { my $phase_name = $_; $r->push_handlers($_, sub($) { my $r = shift; my $s = $r->server; $s->warn(sprintf('phase=%s, status=%s, uri=%s, filename=%s', $phase_name, $r->status, $r->uri, $r->filename, )); return DECLINED; }); } } 1; __END__ =pod:summary Trace mod_perl server events =pod:synopsis In your Apache configuration file: PerlPostReadRequestHandler Apache2::Trace->http_phases Will produce output (C<error_log>) for each http request, e.g.: ... [warn] phase=PerlPostReadRequestHandler, status=200, uri=/, filename= ... [warn] phase=PerlTransHandler, status=200, uri=/, filename= ... [warn] phase=PerlMapToStorageHandler, status=200, uri=/, filename=/var/www/vhosts/example.com/htdocs/ ... [warn] phase=PerlHeaderParserHandler, status=200, uri=/, filename=/var/www/vhosts/example.com/htdocs/ ... [warn] phase=PerlAccessHandler, status=200, uri=/, filename=/var/www/vhosts/example.com/htdocs/ ... [warn] phase=PerlTypeHandler, status=200, uri=/, filename=/var/www/vhosts/example.com/htdocs/ ... [warn] phase=PerlFixupHandler, status=200, uri=/, filename=/var/www/vhosts/example.com/htdocs/ ... [warn] phase=PerlLogHandler, status=304, uri=/index.html, filename=/var/www/vhosts/example.com/htdocs/index.html ... [warn] phase=PerlCleanupHandler, status=304, uri=/index.html, filename=/var/www/vhosts/example.com/htdocs/index.html =cut