41 $self=shift
####
use LogMessages qw(/path/to/logfile);
####
my %logfile;
sub import {
my $class = shift;
$logfile{ +caller} = @_ ? shift : "/tmp/logfile.$$";
};
####
sub _log : ATTR(CODE) {
my ($pkg, $sym, $code) = @_;
if ( DEBUG ) {
my $name = *{ $sym }{NAME};
no warnings 'redefine'; # Turn off symbol redefinitions within the block.
*{ $sym } = sub {
log_message ($logfile{$pkg}, "Entering sub $pkg\:\:$name\n");
my @ret = $code->( @_ );
log_message ($logfile{$pkg}, "Leaving sub $pkg\:\:$name\n");
return @ret;
};
}
}
####
sub log_message {
my $logfile = shift;
open my $LOGFILE, '>>', $logfile
or die "Cannot open logfile '$logfile': $!";
my $time = getLogTime();
print $LOGFILE $time, " ";
for (@_){
print $LOGFILE @_;
}
}