Bot-BasicBot-Pluggable

 view release on metacpan or  search on metacpan

lib/Bot/BasicBot/Pluggable.pm  view on Meta::CPAN

package Bot::BasicBot::Pluggable;
$Bot::BasicBot::Pluggable::VERSION = '1.30';
use warnings;
use strict;

use 5.8.0;
use POE;
use Bot::BasicBot 0.60;
use Log::Log4perl;
use Log::Log4perl::Level;
use base qw( Bot::BasicBot );
use Data::Dumper;

$Data::Dumper::Terse  = 1;
$Data::Dumper::Indent = 0;

use Module::Pluggable
  sub_name    => '_available',
  search_path => 'Bot::BasicBot::Pluggable::Module',
  except      => 'Bot::BasicBot::Pluggable::Module::Base';
use Bot::BasicBot::Pluggable::Module;
use Bot::BasicBot::Pluggable::Store;
use File::Spec;
use Try::Tiny;

sub init {
    my $self = shift;
    $self->init_logging();

    my $logger = Log::Log4perl->get_logger( ref $self );
    $logger->info( 'Starting initialization of ' . ref $self );

    if ( !$self->store ) {
        $logger->debug('Store not set, trying to load a store backend');
        my $store;
        for my $type (qw( DBI Deep Storable Memory )) {
            $store = try {
                $logger->debug("Trying to load store backend $type");
                Bot::BasicBot::Pluggable::Store->new( { type => $type } );
            };
            if ($store) {
                $logger->info("Loaded store backend $type");
                last;
            }
        }
        if ( !UNIVERSAL::isa( $store, 'Bot::BasicBot::Pluggable::Store' ) ) {
            $logger->logdie("Couldn't load any default store type");
        }
        $self->store($store);
    }
    elsif ( !UNIVERSAL::isa( $self->store, "Bot::BasicBot::Pluggable::Store" ) )
    {
        $self->store( Bot::BasicBot::Pluggable::Store->new( $self->store ) );
    }
    return 1;
}

sub init_logging {
    my $self   = shift;
    my $logger = Log::Log4perl->get_logger( ref $self );
    if ( $self->logconfig ) {
        Log::Log4perl->init( $self->logconfig );
    }
    else {
        my $loglevel = $self->loglevel;
        Log::Log4perl::init( \ <<EOT );
	log4perl.rootLogger=$loglevel,Screen
	log4perl.appender.Screen = Log::Log4perl::Appender::Screen
	log4perl.appender.Screen.stderr = 0
	log4perl.appender.Screen.layout = Log::Log4perl::Layout::PatternLayout
	log4perl.appender.Screen.layout.ConversionPattern = %-6p %d %m%n
EOT
    }
}

sub log {
    my $self   = shift;
    my $logger = Log::Log4perl->get_logger( ref $self );
    for my $log_entry (@_) {
        chomp $log_entry;
        $logger->warn($log_entry);
    }
    return;
}



( run in 3.229 seconds using v1.01-cache-2.11-cpan-524268b4103 )