Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge pull request #372 from ziguzagu/additional-custom-log-formats

Added custom log formats %m, %U, %q and %H by Plack::Middleware::AccessLog
  • Loading branch information...
commit 93028b47e686afeb70c5bf23452f0a9caaa0bec5 2 parents 4a7e5a4 + 50cfc56
@miyagawa miyagawa authored
View
8 lib/Plack/Middleware/AccessLog.pm
@@ -85,6 +85,10 @@ sub log_line {
V => sub { $env->{HTTP_HOST} || $env->{SERVER_NAME} || '-' },
p => sub { $env->{SERVER_PORT} },
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 {
@@ -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 -
%p SERVER_PORT from the PSGI environment
%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>.
View
18 t/Plack-Middleware/access_log.t
@@ -38,4 +38,22 @@ my $test = sub {
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;
Please sign in to comment.
Something went wrong with that request. Please try again.