From: Mike S. <m...@pe...> - 2011-10-26 06:44:57
|
On Wed, 12 Oct 2011, J Mash wrote: > I've recently encountered an odd issue while using Moose to create > a wrapper class for Log::Log4perl that results in the logger's > category somehow being returned as 'Eval.Closure', despite that I've > registered the wrapper class as indicated in the documentation. Sorry for the delay on this ... this snippet doesn't compile for me because $cfg isn't defined ... can you please check if you're missing a piece (please enable use strict/use warnings). -- -- Mike Mike Schilli m...@pe... > I'm not sure if this is an actual issue or just something I'm missing >with regards to wrapping Log::Log4perl, but here's a simplified code >example that exhibits the issue: > > ##--------------------------------------------------------------------------- > ------------------------------------------ > { > package Wrapper::Log::Log4perl; > > use Moose; > use MooseX::Method::Signatures; > > use Log::Log4perl; > Log::Log4perl->wrapper_register( __PACKAGE__ ); > > ## Attribute definitions > has 'logger' => ( > is => 'rw', > isa => 'Log::Log4perl::Logger', > ); > > has 'logger_cfg' => ( > is => 'ro', > isa => 'Maybe[Str]', > ); > > ## Object initialization > sub BUILD { > my $self = shift(); > > unless ( Log::Log4perl->initialized() ) { > $self->init( $self->logger_cfg() ); > } > $self->logger( Log::Log4perl->get_logger() ); > } > > ## Method definitions > method init ( Str $cfg ) { > Log::Log4perl->init( $cfg ); > }; > > __PACKAGE__->meta->make_immutable(); > } > > > ##--------------------------------------------------------------------------- > ------------------------------------------ > { > package main; > > use Data::Dumper; > > my $logApi = Wrapper::Log::Log4perl->new( logger_cfg => > '../Data/INI/Log/Log4perl.ini' ); > > print( Dumper($Log::Log4perl::Logger::LOGGERS_BY_NAME) ); > } > > Thanks in advance for taking a peek, and let me know if there's any more > information I can provide. > --J > > |