how to use logging module to log an object like print()

Diez B. Roggisch deets at nospam.web.de
Wed Oct 29 15:15:54 EDT 2008


Steve Holden schrieb:
> Diez B. Roggisch wrote:
>> davy zhang schrieb:
>>> mport logging
>>> import pickle
>>>
>>>
>>> # create logger
>>> logger = logging.getLogger("simple_example")
>>> logger.setLevel(logging.DEBUG)
>>> # create console handler and set level to debug
>>> ch = logging.StreamHandler()
>>> ch.setLevel(logging.DEBUG)
>>> # create formatter
>>> formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s
>>> - %(message)s ")
>>> # add formatter to ch
>>> ch.setFormatter(formatter)
>>> # add ch to logger
>>> logger.addHandler(ch)
>>>
>>> d = {'key':'msg','key2':'msg2'}
>>>
>>> # "application" code
>>> logger.debug("debug message",d)#can not do this
>> logger.debug("yes you can: %r", d)
>>
> One deficiency of this approach, however, is that the string formatting
> is performed even when no logging is required, thereby wasting a certain
> amount of effort on unnecessary formatting.

Nope, it's not. It only happens when the message is really logged.

Diez



More information about the Python-list mailing list