|
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
>
> |