package Foo;
use strict;
use warnings;
sub new {
my $class = shift;
$self = bless {@_}, $class;
$self->init_logging();
}
sub init_logging {
my $self = shift;
return if exists $self->{LOGGER};
eval {
require SomeLogger;
$self->{LOGGER} = SomeLogger->new();
};
}
sub debug {
my $self = shift;
return unless exists $self->{LOGGER};
$self->{LOGGER}->debug(@_);
}
####
my $logger = SomeOtherLogger->new(log_level => 'debug');
my $foo = Foo->new(LOGGER => $logger);
####
use Scalar::Util qw( blessed );
sub debug {
my $self = shift;
return unless exists $self->{LOGGER};
return unless blessed $self->{LOGGER};
return unless $self->{LOGGER}->can('debug');
$self->{LOGGER}->debug(@_);
}