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 )