mocking a logging object

Peter Bengtsson peterbe at gmail.com
Mon Jun 2 07:27:41 EDT 2008


In my unittest I want to override the logger of a working module so
that it puts all logging messages in /tmp/test.log instead so that in
my unittest I can inspect that it logs things correctly. Hopefully
this "pseudo" code will explain my problem::

>>> import logging, os
>>> logging.basicConfig(filename='/tmp/real.log', level=logging.INFO)
>>> logger = logging.getLogger('Real')
>>> logger.info('Real stuff')
>>> os.path.isfile('/tmp/real.log')
True
>>> # do the monkey patching like the unit test does
>>> logging.basicConfig(filename='/tmp/test.log', level=logging.INFO)
>>> logger = logging.getLogger('Test')
>>> logger.info('Test stuff')
>>> os.path.isfile('/tmp/test.log')
False
>>> open('/tmp/real.log').read()
'INFO:Real:Real stuff\nINFO:Test:Test stuff\n'

How can I change what file the logger should write to?



More information about the Python-list mailing list