Catalyst アプリで DBIC が生成する SQL だけを見やすい形でログりたかったので、お二人の方法をまねしてみた。
- DBIx::Class で sql_maker が生成した SQL をロギングする方法 :: Drk7jp
- daily dayflower - DBIC での SQL 覗き見と Log::Dispatch
Catalyst アプリの中で、
use UNIVERSAL::require;
our $REGISTER_FLG = 0;
__PACKAGE__->setup;
sub add_logger {
my $cfg = __PACKAGE__->path_to('log.yml');
Log::Dispatch::Config->require or die $@;
Log::Dispatch::Configurator::YAML->require or die $@;
my $yaml = Log::Dispatch::Configurator::YAML->new($cfg);
Log::Dispatch::Config->configure($yaml);
my $log = Log::Dispatch::Config->instance;
__PACKAGE__->model('DBIC')->storage->debug(1);
__PACKAGE__->model('DBIC')->storage->debugcb(
sub {
my ($op, $info) = @_;
$log->info($info);
}
);
$REGISTER_FLG = 1;
}
add_logger() unless($REGISTER_FLG);
log.yaml
---
dispatchers:
- file
- screen
file:
class: Log::Dispatch::File
min_level: debug
filename: /path/to/dbic.log
mode: append
format: '[%d] [%p] %m'
# format: '[%d] [%p] %m at %F line %L%n'
screen:
class: Log::Dispatch::Screen
min_level: info
stderr: 1
format: '%m'

Leave a comment