[sf-perl] Logging: per-object, per-package, kinda-global?
Kevin Goess
cpan at goess.org
Sat Apr 6 08:26:02 PDT 2013
>
>
> I had the same dilemma with Pinto. I wanted to log stuff from any and all
> objects, but I didn't want a singleton or global logger. So I ended up
> passing loggers to all the constructors. I used a role (called "Loggable")
> to help make each class uniform. But I never really liked having to pass
> that damn logger object all over the place.
>
>
The last couple codebases I've worked on, I've set it up so you can do
Log->info("whatever")
and that "Log" class uses AUTOLOAD to catch the method gets the log4perl
logger based on the caller's package something like this
my $logger = Log::Log4perl::get_logger($caller);
$logger->$levelname(grep {defined $_ } @args);
That keeps the infrastructure code you have to look at in your own stuff to
a minimum.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/sanfrancisco-pm/attachments/20130406/9298218c/attachment.html>
More information about the SanFrancisco-pm
mailing list