Skip to content

Commit

Permalink
Merge pull request #372 from ziguzagu/additional-custom-log-formats
Browse files Browse the repository at this point in the history
Added custom log formats %m, %U, %q and %H by Plack::Middleware::AccessLog
  • Loading branch information
miyagawa committed Feb 8, 2013
2 parents 4a7e5a4 + 50cfc56 commit 93028b4
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/Plack/Middleware/AccessLog.pm
Expand Up @@ -85,6 +85,10 @@ sub log_line {
V => sub { $env->{HTTP_HOST} || $env->{SERVER_NAME} || '-' }, V => sub { $env->{HTTP_HOST} || $env->{SERVER_NAME} || '-' },
p => sub { $env->{SERVER_PORT} }, p => sub { $env->{SERVER_PORT} },
P => sub { $$ }, P => sub { $$ },
m => sub { _safe($env->{REQUEST_METHOD}) },
U => sub { _safe($env->{PATH_INFO}) },
q => sub { ($env->{QUERY_STRING} ne '') ? '?' . _safe($env->{QUERY_STRING}) : '' },
H => sub { $env->{SERVER_PROTOCOL} },
); );


my $char_handler = sub { my $char_handler = sub {
Expand Down Expand Up @@ -184,6 +188,10 @@ L<Apache's LogFormat templates|http://httpd.apache.org/docs/2.0/mod/mod_log_conf
%V HTTP_HOST or SERVER_NAME from the PSGI environment, or - %V HTTP_HOST or SERVER_NAME from the PSGI environment, or -
%p SERVER_PORT from the PSGI environment %p SERVER_PORT from the PSGI environment
%P the worker's process id %P the worker's process id
%m REQUEST_METHOD from the PSGI environment
%U PATH_INFO from the PSGI environment
%q QUERY_STRING from the PSGI environment
%H SERVER_PROTOCOL from the PSGI environment
Some of these format fields are only supported by middleware that subclasses C<AccessLog>. Some of these format fields are only supported by middleware that subclasses C<AccessLog>.
Expand Down
18 changes: 18 additions & 0 deletions t/Plack-Middleware/access_log.t
Expand Up @@ -38,4 +38,22 @@ my $test = sub {
is $log, '-'; is $log, '-';
} }


{
my $req = GET "http://example.com/";
my $fmt = "%r == %m %U%q %H";
$test->($fmt)->($req);
chomp $log;
my ($r, $rs) = split / == /, $log;
is $r, $rs;
}

{
my $req = GET "http://example.com/foo?bar=baz";
my $fmt = "%r == %m %U%q %H";
$test->($fmt)->($req);
chomp $log;
my ($r, $rs) = split / == /, $log;
is $r, $rs;
}

done_testing; done_testing;

0 comments on commit 93028b4

Please sign in to comment.