Plack::Middleware::DBIC::QueryLog - Expose a DBIC QueryLog Instance in Middleware
use Plack::Builder; builder { enable 'DBIC::QueryLog', querylog_args => {passthrough => 1}; $app; };
Plack::Middleware::DBIC::QueryLog does one thing, it places an object that is either an instance of DBIx::Class::QueryLog OR a compatible object into the $env under plack.middleware.dbic.querylog. A new instance is created for each incoming request.
$env
plack.middleware.dbic.querylog
The querylog is intended to be used by DBIX::Class to log and profile SQL queries, particularly during the context of a web request handled by your Plack application. See the documentation for DBIx::Class::QueryLog and in "debugobj" in DBIx::Class::Storage for more information.
This middleware is intended to act as a bridge between DBIx::Class, which can consume and populate the querylog, with a reporting tool such as seen in Plack::Middleware::Debug::DBIC::QueryLog. This functionality was refactored out of Plack::Middleware::Debug::DBIC::QueryLog to facilitate interoperation with other types of reporting tools. For example, you may want query logging but you don't need the Plack debug panels (maybe you are building an RPC or REST application server and want sql query logging, is a possible use case).
Unless you are building some custom logging tools, you probably just want to use the existing debug panel (Plack::Middleware::Debug::DBIC::QueryLog) rather than building something custom around this middleware.
If you are using an existing web application development system such as Catalyst, you can use Catalyst::TraitFor::Model::DBIC::Schema::QueryLog::AdoptPlack to 'hook' the query log into your DBIx::Class schema model. If you are using a different framework, or building your own, please consider releasing your code or sending me a document patch suitable for including in a workbook or FAQ.
This middleware accepts the following arguments.
This is the class which is used to build the querylog unless one is already defined. It defaults to DBIx::Class::QueryLog. You should probably leave this alone unless you need to subclass or augment DBIx::Class::QueryLog.
querylog
If the class name you pass has not already been included (via use or require) we will automatically try to require it.
use
require
Accepts a HashRef of data which will be passed to "querylog_class" when building the querylog.
This middleware defines the following public subroutines
Returns the PSGI $env key under which you'd expect to find an instance of DBIx::Class::QueryLog.
Given a Plack $env, returns a DBIx::Class::QueryLog, if one exists. You should use this in your code that is trying to access the querylog. For example:
use Plack::Middleware::DBIC::QueryLog; sub get_querylog_from_env { my ($self, $env) = @_; Plack::Middleware::DBIC::QueryLog->get_querylog_from_env($env); }
This returns undef if it does not exist. This is the officially supported interface for extracting a DBIx::Class::QueryLog from a Plack request.
Plack, Plack::Middleware, Plack::Middleware::Debug::DBIC::QueryLog, Catalyst::TraitFor::Model::DBIC::Schema::QueryLog::AdoptPlack
John Napiorkowski, <jjnapiork@cpan.org>
<jjnapiork@cpan.org>
Copyright 2011, John Napiorkowski
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Plack::Middleware::DBIC::QueryLog, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Plack::Middleware::DBIC::QueryLog
CPAN shell
perl -MCPAN -e shell install Plack::Middleware::DBIC::QueryLog
For more information on module installation, please visit the detailed CPAN module installation guide.