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.

