package LIMS::Local::Debug;
use strict;
use warnings;
use Exporter;
use FileHandle;
use Data::Dumper;
use LIMS::Local::Config;
use vars qw( $fh1 $fh2 @EXPORT );
@EXPORT = qw( DEBUG ); # debug_path
sub import { goto &Exporter::import }
sub DEBUG {
# don't want t/*.t output unless specifically requested:
return if ($ENV{HARNESS_ACTIVE} && ! $ENV{DEBUG_ON});
my $cfg = LIMS::Local::Config->instance;
my $path = $cfg->{path_to_app_root}; # warn Dumper $path_to_app_root;
unless ($fh1) { # debug.txt in overwrite mode:
$fh1 = new FileHandle '>' . "$path/logs/debug.txt" or die $!;
}
unless ($fh2) { # debug.log in append mode:
$fh2 = new FileHandle '>>' . "$path/logs/debug.log" or die $!;
}
warn Dumper @_; # send to stdout
my $str = join '', map {
ref $_ # use Data::Dumper if it's a ref/object:
? Dumper $_
: $_ . "\n";
} grep $_, @_; # ignore empty elements
print $_ $str for ($fh1, $fh2); # print to both filehandles
$fh1->flush; # for mod_perl
$fh2->flush; # for mod_perl
}
=begin # using LIMS::Local::Config->instance now
# can't use LIMS::Utils version as LT use's this package
sub find_home { # warn Dumper \@INC;
my $path_to_app;
foreach (@INC) {
if (-e "$_/script/lims_server.pl") { # warn 'PATH:', $_;
$path_to_app = $_ and last;
}
}
return $path_to_app;
}
=cut
1;