package RSSReader::Logger; use strict; use Carp; use Data::Dumper; sub log_print { print STDERR $_[1] } sub log_pid { $$ } sub log_class { my $c = shift; ref($c) ? return ref($c) : return $c } sub log_prefix { "" } sub log_msg { my $s = shift; my @f; push @f, '['.scalar(localtime).']'; my $pid = $s->log_pid; push @f, "[$pid]" if $pid; my $ref = $s->log_class; push @f, $ref if $ref; push @f, $s->log_prefix if $s->log_prefix; my @s = map { ref $_? Dumper($_) : $_ } @_; my $h = join(" ", @f) . ": "; foreach my $line ( split(/\n/, join("", @s)) ) { $s->log_print($h . $line . "\n"); } } sub log_spam { my $s = shift; $s->log_msg("spam: ", @_) if $s->log_level >= 6; } sub log_sadist { my $s = shift; $s->log_msg("sadist: ", @_) if $s->log_level >= 9; } sub log_debug { my $s = shift; $s->log_msg("[debug] ", @_) if $s->log_level >= 3; } sub log_warn { my $s = shift; $s->log_msg("warn: ", @_) if $s->log_level >= 2; } sub log_error { my $s = shift; $s->log_msg("ERROR: ", @_) if $s->log_level >= 1; } sub log_fatal { my $s = shift; $s->log_msg("FATAL: ", @_); Carp::cluck "Trace do Stack nesta altura:"; exit(1); } sub log_level { my $s = shift; if (@_) { $s->{_logger_level} = $_[0]; } my $l = (ref($s) && exists $s->{_logger_level} && $s->{_logger_level}) || $ENV{SYNDIGATOR_LOGGER_LEVEL} || 1; return $l; } #$ENV{LOGGER_LEVEL} = 6; __PACKAGE__->log_debug("Log level is set to *".__PACKAGE__->log_level."*\n"); 1; __END__