[Python-Dev] PEP282 and the warnings framework
Wed, 15 May 2002 12:53:09 -0600
holger krekel wrote:
> Kevin Butler wrote:
>>In contrast, creating a new Logger (or "Category") instance meets little
>>resistance, and a shift to that model was welcomed by all...except the
>>developer of the message hierarchy logging system.
> having a Logger-instance which processes messages is quite orthogonal
> to how the messages are categorized.
> Where is the advantage if you use integer log levels?
> Am i missing something?
I think you're missing something. The proposed API (PEP 282) provides integer
priorities (log/error/debug/etc.), and hierarchical categorization by the
The logger instance contains the category (I forget if we call Logger
constructors or call a factory method):
logger = Logger( "pil.image.jpeg" )
logger2 = Logger( "pil.image.gif" )
logger.debug( "My JPEG Image PIL Debug message" )
logger2.error( "My GIF image PIL error message" )
The logging of theses message is configurable based on the "pil" category, the
"pil.image" category, the "pil.image.jpeg"/"pil.image.gif" category, and their
This means if I am debugging something in PIL images, I can enable all log
messages in the "image" category. Or I could enable just everything having to
do with JPEG images, and ignore all that proprietary GIF stuff.
To get similar functionality with a message-based hierarchy, I'd have to
define separate "PilImageJpegMessage" and "PilImageGifMessage" classes, and
have them both extend a PilImageMessage class.
> (The base Message class should accept Exceptions and Strings IMO.)
FWIW, once you allow logging 'string'-type messages, most logged messages will
be a string (especially debug messages), because it is much easier than
creating an instance of some other clsas. Thus, if your categorization is
based on the class of the logged message, the "string" category gets very large...
> This doesn't touch the question how messages
> should be categorized (by integer or by class-type).
The question, as I understood it, was whether to categorize by
message-class-name, or by logger-instance-category.
Although the 'message-class' hierarchy appears attractive, logger-instance
categorization has been more useful to me.