The logging module is designed to prevent bad log messages from killing the rest of the code, so the emit method catches errors and passes them to the handleError method. The easiest way would be to temporarily edit /usr/lib/python2.6/logging/__init__.py and find handleError . It looks something like this:
def handleError(self, record): """ Handle errors which occur during an emit() call. This method should be called from handlers when an exception is encountered during an emit() call. If raiseExceptions is false, exceptions get silently ignored. This is what is mostly wanted for a logging system - most users will not care about errors in the logging system, they are more interested in application errors. You could, however, replace this with a custom handler if you wish. The record which was being processed is passed in to this method. """ if raiseExceptions: ei = sys.exc_info() try: traceback.print_exception(ei[0], ei[1], ei[2], None, sys.stderr) sys.stderr.write('Logged from file %s, line %s\n' % ( record.filename, record.lineno)) except IOError: pass # see issue 5971 finally: del ei
Now temporarily edit it. Inserting a simple raise at the beginning should ensure that the error is passed by your code instead of swallowing. Once you have fixed the problem, simply return the logging code to what it was.
Duncan
source share