[Python-Dev] PEP 282 Implementation
Guido van Rossum
guido@python.org
Fri, 09 Aug 2002 16:40:02 -0400
A month (!) ago, Vinay Sajip wrote:
> I've uploaded my logging module, the proposed implementation for PEP 282,
> for committer review, to the SourceForge patch manager:
>
> http://sourceforge.net/tracker/index.php?func=detail&aid=578494&group_id=5470&atid=305470
>
> I've assigned it to Mark Hammond as (a) he had posted some comments
> to Trent Mick's original PEP posting, and (b) Barry Warsaw advised
> not assigning to PythonLabs people on account of their current
> workload.
Well, Mark was apparently too busy too. I've assigned this to myself
and am making progress with the review.
> The file logging.py is (apart from some test scripts) all that's
> supposed to go into Python 2.3. The file logging-0.4.6.tar.gz
> contains the module, an updated version of the PEP (which I mailed
> to Barry Warsaw on 26th June), numerous test/example scripts, TeX
> documentation etc. You can also refer to
>
> http://www.red-dove.com/python_logging.html
>
> Here's hoping for a speedy review :-)
Here's some feedback.
In general the code looks good. Only one style nits: I prefer
docstrings that have a one-line summary, then a blank line, and then a
longer description.
There's a lot of code there! Should it perhaps be broken up into
different modules? Perhaps it should become a logging *package* with
submodules that define the various filters and handlers.
Some detailed questions:
- Why does the FileHandler open the file with mode "a+" (and later
with "w+")? The "+" makes the file readable, but I see no reason to
read it. Am I missing?
- setRollover(): the explanation isn't 100% clear. I *think* that you
always write to "app.log", and when that's full, you rename it to
app.log.1, and app.log.1 gets renamed to app.log.2, and so on, and
then you start writing to a new app.log, right?
- class SocketHandler: why set yourself up for buffer overflow by
using only 2 bytes for the packet size? You can use the struct
module to encode/decode this, BTW. I also wonder what the
application for this is, BTW.
- method send(): in Python 2.2 and later, you can use the sendall()
socket method which takes care of this loop for you.
- class DatagramHandler, method send(): I don't think UDP handles
fragmented packets very well -- if you have to break the packet up,
there's no guarantee that the receiver will see the parts in order
(or even all of them).
- fileConfig(): Is there documentation for the configuration file?
That's it for now.
--Guido van Rossum (home page: http://www.python.org/~guido/)