[sf-perl] Logging: per-object, per-package, kinda-global?
Jeffrey Ryan Thalhammer
jeff at imaginative-software.com
Fri Apr 5 20:58:19 PDT 2013
On Apr 5, 2013, at 3:49 PM, George Hartzell wrote:
> We can all agree that globals are evil, right? (you there in back,
> put your hand down, I'm trying to make a point...).
> I'm looking at logging and am (once again) playing with a couple of
> the strategies that package on CPAN enable.
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.
I was using the logger as my chrome too -- to display diagnostic messages to the user. But then I realized the user really has no interest in the messages from all those low-level classes. There were only a handful of classes that could produce any kind of user-friendly message.
I still pass around the logger to each constructor, but only for a few classes now. And instead of logging, the low-level classes just have a simple debug() function that spits messages to STDERR only if PINTO_DEBUG is set. So I've sacrificed some (probably unnecessary) power & flexibility in exchange for simpler, cleaner code.
Your mileage may vary.
More information about the SanFrancisco-pm