Log-Log4perl-Tiny

 view release on metacpan or  search on metacpan

lib/Log/Log4perl/Tiny.pm  view on Meta::CPAN

      push @message, sprintf " at %s line %d.\n", $file, $line
         if substr($message[-1], -1, 1) ne "\n";

      # go for it!
      CORE::warn(@message);
   }

   return
} ## end sub logwarn

sub logdie {
   my $self = shift;

   my @message;
   @message = __expand_message_list({message => \@_})
      if $self->is_fatal() || $LOGDIE_MESSAGE_ON_STDERR;

   $self->fatal(@message);

   if ($LOGDIE_MESSAGE_ON_STDERR) {
      # default die message when nothing is passed to die
      push @message, "Died" unless @message;

      # add 'at <file> line <line>' unless argument ends in "\n";
      my (undef, $file, $line) = caller(1);
      push @message, sprintf " at %s line %d.\n", $file, $line
         if substr($message[-1], -1, 1) ne "\n";

      # go for it!
      CORE::die(@message);
   }

   $self->_exit();
} ## end sub logdie

sub logexit {
   my $self = shift;
   $self->fatal(@_);
   $self->_exit();
}

sub _carpstuff {
   my $self = shift;
   my $renderer = shift;
   my $emitter  = shift;
   my $log_level = shift;

   my $emit_log = $self->can("is_$log_level")->($self);

   require Carp;
   local $Carp::Internal{'' . __PACKAGE__} = 1;
   local $Carp::CarpLevel = $Carp::CarpLevel + 2;

   my @message;
   @message = __expand_message_list({message => \@_})
      if $emit_log || $LOGDIE_MESSAGE_ON_STDERR;

   if ($emit_log) {    # avoid unless we're allowed to emit
      my $message = Carp->can($renderer)->(@message);
      my $method = $self->can($log_level);
      $self->$method($_) for split m{\n}mxs, $message;
   }
   if ($LOGDIE_MESSAGE_ON_STDERR) {
      Carp->can($emitter)->(@message);
   }

   return;
}

sub logcarp {
   my $self = shift;
   return $self->_carpstuff(qw< shortmess carp warn >, @_);
} ## end sub logcarp

sub logcluck {
   my $self = shift;
   return $self->_carpstuff(qw< longmess cluck warn >, @_);
} ## end sub logcluck

sub logcroak {
   my $self = shift;
   $self->_carpstuff(qw< shortmess croak fatal >, @_);
   $self->_exit();
} ## end sub logcroak

sub logconfess {
   my $self = shift;
   $self->_carpstuff(qw< longmess confess fatal >, @_);
   $self->_exit();
} ## end sub logconfess

sub level {
   my $self = shift;
   $self = $_instance unless ref $self;
   if (@_) {
      my $level = shift;
      return unless exists $id_for{$level};
      $self->{level} = $id_for{$level};
      $self->{_count}++;
   } ## end if (@_)
   return $self->{level};
} ## end sub level

sub _set_level_if_first {
   my ($self, $level) = @_;
   if (!$self->{_count}) {
      $self->level($level);
      delete $self->{_count};
   }
   return;
} ## end sub _set_level_if_first

sub __expand_message_list {
   join(
      (defined $, ? $, : ''),
      map { ref($_) eq 'CODE' ? $_->() : $_; } @{shift->{message}}
   );
}

BEGIN {



( run in 0.369 second using v1.01-cache-2.11-cpan-71847e10f99 )