package MyFirst; use strict; use warnings; use feature 'say'; use Log::Any qw/ $log /; sub do_this { say 'Hello from MyFirst'; $log->debug('This is a debug message'); } 1; #### package MySecond; use strict; use warnings; use feature 'say'; use Log::Any qw/ $log /; sub do_that { say 'Hello from MySecond'; $log->warn('This is a warning!'); } 1; #### use strict; use warnings; use feature 'say'; use lib '.'; use MyFirst; use MySecond; use Log::Any::Adapter; use Log::Any::Adapter::Dispatch; my $logger = Log::Dispatch->new( outputs => [ [ 'Screen', min_level => 'warning' ], [ 'File', min_level => 'debug', filename => 'logfile', newline => 1 ], ]); Log::Any::Adapter->set( { category => qr/^My/ }, 'Dispatch', dispatcher => $logger, ); MyFirst::do_this(); MySecond::do_that(); __END__ #### perl 1203778.pl Hello from MyFirst Hello from MySecond This is a warning! #### $ cat logfile This is a debug message This is a warning!