[Python-Dev] Proposed change to logging.basicConfig

Terry Reedy tjreedy at udel.edu
Tue Mar 29 20:48:56 CEST 2011


On 3/29/2011 12:35 PM, Vinay Sajip wrote:
> I'm planning a change to logging.basicConfig to add an optional "handlers"
> keyword argument which defaults to None.
>
> If specified, this should be an iterable of already created handlers, which will
> be added to the root logger (if it doesn't already have any handlers). Any
> handler in the iterable which does not have a formatter assigned will be
> assigned the formatter created by basicConfig.
>
> If "handlers" is specified, the "stream", "filename" and "filemode" arguments
> will be ignored.
>
> If any of you can see any problems with this change, or can suggest any
> improvement to the approach, please respond. I expect to check this change in
> within the next few days.

I am bothered by mutually exclusive parameters. This is one reason I was 
glad to see cmp eliminated from list.sort. Quick: what happens if one 
passes both cmp and key to list.sort? There are three reasonable 
possibilities. As far as I can read, the answer is not documented.#

I am not familiar with logging, but I wonder if you should have two 
functions for the two quite different signatures. If not, I think the 
result of passing conflicting parameters should be something like 
TypeError: conflicting parameters passed. "In the face of ambiguity, 
refuse to guess."

# Experiment with 2.7 shows that cmp wins. Though too late to change, I 
consider this the worst choice of three. I think an exception should be 
raised. Failing that, I think key should win on the basis that if one 
adds a 'new-fangled' key func to an existing call with cmp (and forgets 
to remove cmp), the key func is the one intended. Also, the doc clearly 
indicates that key is considered superior to cmp.

-- 
Terry Jan Reedy



More information about the Python-Dev mailing list