package RDF::Server::Protocol; use Moose::Role; sub log_request { my($self, $request, $response) = @_; # log the request and resulting return code my $logger = Log::Log4perl -> get_logger($self -> meta -> name); #10.211.55.2 dev.local:81 - [08/Mar/2008:01:50:29 -0600] "GET /RDF-Server/cover_db/blib-lib-RDF-Server-Role-Mutable-pm.html HTTP/1.1" 200 3624 "http://dev.local:81/RDF-Server/cover_db/coverage.html" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X; en-us) AppleWebKit/523.15.1 (KHTML, like Gecko) Version/3.0.4 Safari/523.15" my $request_string = $request -> method . ' ' . $request -> uri; $request_string =~ s{\s+}{ }g; $request_string =~ s{^\s+}{}; $request_string =~ s{\s+$}{}; $logger -> info( sprintf('"%s" %3d %d', $request_string, $response -> code, length( $response -> content ) ) ); } 1; __END__ =pod =head1 NAME RDF::Server::Protocol - defines how RDF::Server communicates with the world =head1 SYNOPSIS package My::Protocol; use Moose::Role; with 'RDF::Server::Protocol'; =head1 DESCRIPTION A protocol module translates between the world and the interface module, creating and using HTTP::Request and HTTP::Response objects as needed. =head1 REQUIRED METHODS No methods are required by this role. =head1 PROVIDED METHODS =over 4 =item log_request This method will log the protocol equivalen of the HTTP request, response code, and response content length. =back =head1 SEE ALSO L =head1 AUTHOR James Smith, C<< >> =head1 LICENSE Copyright (c) 2008 Texas A&M University. This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut