NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.
All the Perl that's Practical to Extract and Report
Stories, comments, journals, and other submissions on use Perl; are Copyright 1998-2006, their respective owners.
Some nits to pick (Score:2)
First, the
set_logger()method is not actually setting a logger at all, which is confusing. It's setting a callback that returns a logger, so maybe it should beset_logger_factory()or something like that. This is particularly problematic since there's aget_logger()method, which doesn't return the thing passed toset_logger()!I'm not sure that passing in a sub ref is the best API either. My gut feeling is that "the average programmer" isn't really comfortable with subroutine references. OTOH, I see the need for being able to pass in a log making strategy, as opposed to a single log object.
Maybe there could be a super-simple API where you pass in a log object, and a more complex API where you pass in a sub ref or logger factory class.
I also wonder how this package-level globalness will work. What if I have a CPAN module that wants to set the
Log::Anylogger, and I want to use that module in my app but set a different logger? Is it last set wins?Imagine the problems this could cause under mod_perl. Maybe the answer for mod_perl is that your app needs to set the logger on every request, not just once at startup time.
Reply to This
Re: (Score:1)
So the only place the logger would be set would be in your 'top level' application, or framework (catalyst, jifty, etc).
Re: (Score:1)
Re: (Score:1)
> confusing. It's setting a callback that returns a logger, so maybe it should be
> set_logger_factory() or something like that. This is particularly problematic since
> there's a get_logger() method, which doesn't return the thing passed to set_logger()!
You're right, set_logger() should be renamed, though I'm not sure I can bear to use "factory".
>
> I'm not sure that passing in a sub ref is the best API eith
Re: (Score:1)
The name you are looking for is
register_logger.