package Local::QueryLogger;
# TODO - apache fastcgi process can't find location of calling apps' logs dir
# creates 2 files, '%d{yyyy_MMdd}_sql.log' with 0660 permissions, another with
# todays date but 644 permissions (apache fastcgi process can't create this one)
use DateTime;
use Data::Printer;
use FindBin qw($Bin); # warn $Bin;
use Log::Dispatch::File::Rolling;
use Moo;
use Local::MooX::Types qw(String);
our $CurrentUsername; # set later on login
# my $today = DateTime->today->ymd;
my $dispatcher = Log::Dispatch->new;
# development:
$dispatcher->add(
Log::Dispatch::File->new(
permissions => 0600,
min_level => 'info',
filename => 'logs/devel.sql',
newline => 0,
name => 'devel',
mode => 'append',
)
);
# deployment:
$dispatcher->add(
Log::Dispatch::File::Rolling->new(
permissions => 0660,
min_level => 'info',
# filename => "logs/${today}_sql.log", # will be relative to start script dir
filename => 'logs/%d{yyyy_MMdd}.sql', # will be relative to start script dir
newline => 0,
name => 'deployment',
mode => 'append',
)
);
=begin # Log::Dispatch::FileWriteRotate:
use Log::Dispatch::FileWriteRotate;
$dispatcher->add(
Log::Dispatch::FileWriteRotate->new(
min_level => 'info',
# will be passed to File::Write::Rotate
dir => '/home/raj/apps',
prefix => 'query',
suffix => '.log',
period => 'daily',
size => 25*1024*1024,
histories => 1000, # 0 keeps no histories
)
);
=cut
sub log {
my ($self, $name, $level, $msg) = @_; # ddp $name; ddp $msg; # ddp $level;
if ($CurrentUsername) { # will only exist if app has login & session
$msg = join ' ', uc $CurrentUsername, $msg; # prepend username
} # ddp $CurrentUsername; ddp $name; ddp $msg;
$dispatcher->log_to(name => $name, level => $level, message => $msg);
}
1;