Issue6399
Created on 2009-07-02 09:50 by mike, last changed 2009-07-08 23:10 by vinay.sajip.
| Messages (8) | |||
|---|---|---|---|
| msg90007 - (view) | Author: Mike (mike) | Date: 2009-07-02 09:50 | |
Hi, I had a logging.conf file with the following logger def in it: [logger_Builder] level=DEBUG handlers=consoleStderr qualname=Builder propogate=0 And I couldn't understand why all my log messages were coming out twice. It took me four hours :-\ to realise I had misspelt "propagate". Wouldn't it be better if spurious names raised parsing exceptions? Thanks, Mike. P.S. Another thing that might have helped me track this down a little quicker is if I could have printed the name of the logger that was the source of some output. %(name)s gives the logger that *received* the log message. If there was another format variable for the logger that was the source of a log message I would have seen one message from Builder and one message from root and it would have been more obvious what was going on. |
|||
| msg90036 - (view) | Author: R. David Murray (r.david.murray) | Date: 2009-07-02 23:10 | |
Ignoring unknown options in the configuration file is analogous to ignoring unknown tags in html: it makes it easier to use the same config file with multiple versions of the logger, with older versions ignoring the options they don't understand. This is a tradeoff, and I suppose it could be argued that the tradeoff is being made in the wrong direction here. I don't use configuration files for logging myself, so I'm not a good person to render an opinion on that. But IMO this is not a bug; changing the behavior would be a feature request. |
|||
| msg90044 - (view) | Author: Mike (mike) | Date: 2009-07-03 07:50 | |
Fair point. Agree that this is a feature request. Perhaps something like: logging.config.fileConfig(path, strict=False) |
|||
| msg90068 - (view) | Author: Vinay Sajip (vinay.sajip) | Date: 2009-07-03 17:05 | |
I'm not sure that this is a valid feature request. As R. David Murray has said, it's sort of an unwritten rule of ConfigParser-based applications that they look for specific entries, but don't care what else is there in the file - sort of in line with Postel's Law. The appearance of multiple messages pretty much points to multiple handlers handling the message; knowing the way the hierarchy works, propagation should have been one of the first things to check (as I assume you had added handlers both at and above [logger_Builder]. I know hindsight is wonderful, and I'm sorry it took you 4 hours to find the problem; but I'm not convinced by this that I need to put more error checking into the fileConfig code. |
|||
| msg90227 - (view) | Author: Mike (mike) | Date: 2009-07-07 11:20 | |
Sorry, I only started learning Python a couple of weeks ago. Didn't know that there was a ConfigParser module. So this would really be a feature request of ConfigParser? Interesting you should mention Postel's Law. Being liberal about what you accept from others doesn't mean ignoring non-conformance. Jon Postel was clear that although you endeavour to continue when encountering non-conformance you should always report it, lest non-conformance propogates (sic). I can think of two ways ConfigParser could report these problems. Either you give it a callback function it can call as it encounters problems, or, after you have parsed a file you can call another function that gives a list of any problems encountered. If ConfigParser had this functionality it would then be straightforward for the logging.config.fileConfig module to send these warnings to the root logger. |
|||
| msg90235 - (view) | Author: Vinay Sajip (vinay.sajip) | Date: 2009-07-07 13:15 | |
Well, there are other systems around (e.g. ConfigObj) which will allow you to validate against a schema, but it's not part of the core so logging can't rely on it. I'm not sure how much interest there'd be in adding this kind of validation to ConfigParser, but you could always try working up a patch and assigning it to whoever maintains ConfigParser, or contacting that person beforehand to see if it's worth it, or posting on c.lpy with the same objective. |
|||
| msg90273 - (view) | Author: Mike (mike) | Date: 2009-07-08 16:47 | |
Hi Vinay, I will bow to your greater expertise on this and will let this go. It looks like it will be far more easier and robust just to invent my own logging config file format and read it myself. Thanks for your help. Mike. |
|||
| msg90293 - (view) | Author: Vinay Sajip (vinay.sajip) | Date: 2009-07-08 23:10 | |
Mike, That's just fine. Sorry if I appear unhelpful, but in the open source world we mostly scratch our own itches. I believe I have a reasonable record on accepting patches from the community (though I don't of course accept everything), and I unfortunately don't have much time to spend on this because of other, more pressing itches :-( Best of luck with it. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2009-07-08 23:10:28 | vinay.sajip | set | messages: + msg90293 |
| 2009-07-08 16:47:54 | mike | set | status: open -> closed messages: + msg90273 |
| 2009-07-07 13:15:22 | vinay.sajip | set | messages: + msg90235 |
| 2009-07-07 11:20:17 | mike | set | status: pending -> open messages: + msg90227 |
| 2009-07-03 17:05:06 | vinay.sajip | set | status: open -> pending resolution: invalid messages: + msg90068 |
| 2009-07-03 07:50:22 | mike | set | messages: + msg90044 |
| 2009-07-02 23:10:54 | r.david.murray | set | priority: low nosy: + vinay.sajip, r.david.murray messages: + msg90036 type: behavior -> feature request |
| 2009-07-02 09:50:30 | mike | create | |