DBIC が生成する SQL をログってみる

| 0 Comments | 0 TrackBacks

Catalyst アプリで DBIC が生成する SQL だけを見やすい形でログりたかったので、お二人の方法をまねしてみた。

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'

No TrackBacks

TrackBack URL: http://blog.woremacx.com/MT/mt-tb.cgi/158

Leave a comment