Changeset 3695 for lang/perl/Archer

Show
Ignore:
Timestamp:
12/28/07 11:23:36 (11 months ago)
Author:
tokuhirom
Message:

r3629@mnk (orig r279): tokuhiro | 2007-02-18 18:46:10 -0800
added log level support.code from plagger.


Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Archer/lib/Archer.pm

    r3689 r3695  
    2323    my $config_loader = Archer::ConfigLoader->new; 
    2424    $self->{config} = $config_loader->load($opts->{config_yaml}); 
     25    $self->{config}->{global}->{log} ||= { level => 'debug' }; 
    2526 
    2627    Archer->set_context($self); 
     
    115116# TODO: use the log4perl? 
    116117sub log { 
    117     my ($self, $level, $msg) = @_; 
     118    my ( $self, $level, $msg, %opt ) = @_; 
    118119 
    119     warn "[$level] $msg\n"; 
     120    return unless $self->should_log($level); 
     121 
     122    # hack to get the original caller as Plugin or Rule 
     123    # from plagger. 
     124    my $caller = $opt{caller}; 
     125    unless ($caller) { 
     126        my $i = 0; 
     127        while (my $c = caller($i++)) { 
     128            last if $c !~ /Plugin|Rule/; 
     129            $caller = $c; 
     130        } 
     131        $caller ||= caller(0); 
     132    } 
     133 
     134    warn "$caller [$level] $msg\n"; 
     135} 
     136 
     137my %levels = ( 
     138    debug => 0, 
     139    warn  => 1, 
     140    info  => 2, 
     141    error => 3, 
     142); 
     143 
     144sub should_log { 
     145    my($self, $level) = @_; 
     146 
     147    $levels{$level} >= $levels{ $self->{config}->{global}->{log}->{level} }; 
    120148} 
    121149