package Catalyst::Logger; # no need for Base use base qw( Class::Factory ); __PACKAGE__->register_factory_type( stream => 'Catalyst::Logger::Stream' ); __PACKAGE__->register_factory_type( apache => 'Catalyst::Logger::Apache' ); ... my $logger = Catalyst::Logger( 'file', { filename => '/var/log/my_place/app.log', log_priority => 'INFO', show_source => 1, show_time => 1, } );