[Python-Dev] transitioning from % to {} formatting

Vinay Sajip vinay_sajip at yahoo.co.uk
Thu Oct 1 16:37:29 CEST 2009


Antoine Pitrou <solipsis <at> pitrou.net> writes:

> There's another possibility, which is to build the wrapping directly around the
> logger. That is, if I want a %-style logger, I do:
> 
>    logger = logging.getLogger("smtp")
>    logger.debug("incoming email from %s", sender_address)
> 
> and I want a {}-style logger, I do:
> 
>    logger = logging.getLogger("smtp", style="{}")
>    logger.debug("incoming email from {addr}", addr=sender_address)
> 
> (of course, different users of the "smtp" logger can request different
> formatting styles when calling getLogger().)

There's a LoggerAdapter class already in the system which is used to wrap
loggers so that additional contextual information (e.g. network or database
connection information) can be added to logs. The LoggerAdapter could fulfill
this "wrapping" function.

> We could combine the various proposals to give users flexible APIs. Of course,
> it generally smells of "there's more than one way to do it".

Yeah, that bothers me too.

> > It's the Rumsfeldian "We don't know what we don't know" 
> 
> Is this guy in the Python community? 

Not sure, but I believe he's a piece of work and not a guy to get on the wrong
side of ;-)

Regards,

Vinay Sajip



More information about the Python-Dev mailing list