NAME

Catalyst::Plugin::Profile::DBI::Log - per-request DB query logging & profiling

SYNOPSIS

Load the plugin like any other Catalyst plugin e.g.

use Catalyst qw(Profile::DBI::Log);

hit your app with some requests, then point your browser at /dbi/log/index and you'll see a list of HTTP requests handled, along with info on how many queries they ran and how long they spent waiting for the DB, with a clickable link to view the actual queries and stack trace of where they came from.

DESCRIPTION

I needed a way to quickly and easily see, for each API route invocation (HTTP request) my app handled,

How many DB queries were performed
How long we spent waiting for DB queries
What the actual queries executed were and how long each took
Where in our codebase those queries were performed

This plugin is designed to simplify just that.

When loaded, it arranges for DBI::Log to log all queries to log files, while adding some metadata of our own to identify the HTTP request being processed. It adds a route handler to provide routes to list requests profiled along with summary info (how many queries, how long spent waiting on queries etc), and clickable links to view all the queries performed, and to view a stack trace of where the query was performed from (to see easily what part of your codebase triggered it).

SEE ALSO

There are a couple of prior art examples which capture stats from DBIC using DBIx::Class::Storage::Statistics such as Catalyst::Plugin::DBIC::Profiler but parts of one of our apps, for hairy legacy reasons also go direct to the DB with DBI, so we needed to catch those too - and wanted a useful way to see the list of profiled requests right in the browser.

SECURITY

This is a development tool. It captures, records and serves up raw SQL queries which may well contain sensitive information - e.g. parameters used to search the DB, etc. I would not recommend loading it on a production site or exposing an app with it loaded to the Internet.

AUTHOR

David Precious (BIGPRESH) <davidp@preshweb.co.uk>

COPYRIGHT AND LICENCE

Copyright (C) 2024 by David Precious

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.