On Tue, Mar 6, 2012 at 15:58, Hyrum K Wright <hyrum.wright_at_wandisco.com> wrote:
> On Tue, Mar 6, 2012 at 2:42 PM, Greg Stein <gstein_at_gmail.com> wrote:
>...
>> You may as well use the default logger. That way, every module can
>> just: import logging ; logging.info('whatever: %s %s', foo, bar)
>
> I thought about that, but figured using the custom logger would give
> us more flexibility. Separate test suites could use separate loggers
> when run in parallel, for instance, and they wouldn't interleave each.
> By establishing the habit of using a named logger, rather than the
> default one, it means we can just change the logger reference, instead
> of go back and rewrite everything to use a custom logger later.
>
> This first pass is to just get as much as possible using the logging
> framework, and then we can go back and worry about such things. I
> just don't want us to prematurely optimize. :)
Euh... that's not premature optimization. That is keeping things
*simple* unless and until circumstances dictate that we need more
complexity. You haven't demonstrated that at all yet.
And as long as you keep doing a per-module logger, then each and every
one of those loggers will need to be configured. Add a stream handler.
Add a formatter. Adjust their loglevel based on the verbose flag.
etc-f'in-etc.
By sticking to the root logger, the main.py can get it configured
properly and all modules can use it without concern. As it stands,
per-module loggers absolutely increases complexity with zero benefit.
>...
>> You may want to change most of the calls to logging.FOO rather than
>> logger.FOO for consistency with other modules that will use the
>> logging framework.
>>
>> I would also recommend creating a Formatter and attaching it to that
>> StreamHandler:
>>
>> formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s',
>> '%Y-%m-%d %H:%M:%S')
>> handler.setFormatter(formatter)
>>
>> that will give us a timestamp for each line.
>
> Future Work. A valuable suggestion, but right now I'm focused on
> getting the logging infrastructure in place, so we can make this kind
> of changes on a system-wide basis.
It can only be done (easily) on a system-wide basis if you use the
root logger :-)
Cheers,
-g
Received on 2012-03-06 22:02:36 CET