Raw content of Bio::EnsEMBL::Analysis::Tools::Logger package Bio::EnsEMBL::Analysis::Tools::Logger; use strict; use warnings; use Exporter; use vars qw(@ISA @EXPORT); use Bio::EnsEMBL::Utils::Exception qw(verbose throw warning stack_trace_dump); @ISA = qw(Exporter); @EXPORT = qw(logger_verbosity logger_info); my $DEFAULT_OFF = 0; my $DEFAULT_INFO = 4000; my $DEFAULT_INFO_WITH_TRACE = 5000; my $VERBOSITY = $DEFAULT_OFF; sub logger_verbosity{ if(@_) { my $verbosity = shift; $verbosity = shift if($verbosity && $verbosity eq "Bio::EnsEMBL::Utils::Exception"); $verbosity = $VERBOSITY if(!$verbosity); if($verbosity =~ /\d+/) { #check if verbosity is an integer $VERBOSITY = $verbosity; } else { if($verbosity eq 'OFF' || $verbosity eq 'NOTHING' || $verbosity eq 'NONE'){ $VERBOSITY = $DEFAULT_OFF; }elsif($verbosity eq 'INFO' || $verbosity eq 'LOGGER_INFO'){ $VERBOSITY = $DEFAULT_INFO; } elsif ($verbosity eq 'INFO_STACK_TRACE' || $verbosity eq 'LOGGER_INFO_STACK_TRACE') { $VERBOSITY = $DEFAULT_INFO_WITH_TRACE; } elsif($verbosity eq 'ALL' || 'ON'){ $VERBOSITY = 1e6; } else { $VERBOSITY = $DEFAULT_OFF; warning("Unknown level or verbosity :".$verbosity); } } } return $VERBOSITY; } sub logger_info { my $string = shift; if ($VERBOSITY < $DEFAULT_INFO) { return; } elsif ($VERBOSITY < $DEFAULT_INFO_WITH_TRACE) { print STDERR "INFO: $string\n"; return; } my @caller = caller; my $line = $caller[2] || ''; #use only 2 subdirs for brevity when reporting the filename my $file; my @path = split(/\//, $caller[1]); $file = pop(@path); my $i = 0; while(@path && $i < 2) { $i++; $file = pop(@path) ."/$file"; } @caller = caller(1); my $caller_line; my $caller_file; $i=0; if(@caller) { @path = split(/\//, $caller[1]); $caller_line = $caller[2]; $caller_file = pop(@path); while(@path && $i < 2) { $i++; $caller_file = pop(@path) ."/$caller_file"; } } my $out = "\n-------------------- LOG INFO ---------------------\n". "MSG: $string\n". "FILE: $file LINE: $line\n"; $out .= "CALLED BY: $caller_file LINE: $caller_line\n" if($caller_file); $out .= "---------------------------------------------------\n"; print STDERR $out; } 1;