MooseX::Log::Log4perl is a role. However, the role will not work with Log::Log4Perl being initialized. If moose roles could be subclassed, then you would simply create a local subclass of MooseX::Log::Log4perl and do your Log::Log4perl initiation there. But that is not possible. So somehow you need to do your local initialization and then also use this role, which seems a bit non-encapsulated.