in reply to perl modules design for logging

Hello pwagyi

you can start here: Logging at Task::Kensho

Also Log::Any seems interesting and can be used directly inside Moo class:

package Foo; use Log::Any (); use Moo; has log => ( is => 'ro', default => sub { Log::Any->get_logger }, );

You can also be interested in logging in my bibliotheca linking to Choosing a log level

L*

There are no rules, there are no thumbs..
Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.