Using ErrorHandler¶
This is a handler for the python standard logging framework that can be used to tell whether messages have been logged at or above a certain level.
This can be useful when wanting to ensure that no errors have been logged before committing data back to a database.
Basic usage¶
First, you set up the error handler:
>>> from logging import getLogger
>>> from errorhandler import ErrorHandler
>>> logger = getLogger()
>>> e = ErrorHandler()
The handler starts off being un-fired:
>>> e.fired
False
Then you do whatever else you need to do, which may involve logging:
>>> logger.info('some information')
>>> e.fired
False
However, if any logging occurs at an error level or above:
>>> logger.error('an error')
Then the error handler becomes fired:
>>> e.fired
True
You can use this as a condition to only perform certain actions when no errors have been logged:
>>> if e.fired:
... print("Not updating files as errors have occurred")
Not updating files as errors have occurred
Resetting¶
If your code does work in batches, you may wish to reset the error handler at the start of each batch:
>>> e.fired
True
>>> e.reset()
>>> e.fired
False
Registering for a particular logger¶
The error handler can be set to only trigger on a certain logger and its children:
>>> from logging import getLogger
>>> e = ErrorHandler(logger='b')
Using these three loggers as an example:
>>> a = getLogger()
>>> b = getLogger('b')
>>> c = getLogger('b.c')
Logging to a won’t trigger the handler:
>>> a.critical('message')
>>> e.fired
False
Logging to b will trigger the handler:
>>> b.critical('message')
>>> e.fired
True
>>> e.reset()
>>> e.fired
False
Logging to c will also trigger the handler:
>>> c.critical('message')
>>> e.fired
True
Using a different log level¶
The logging level at which the ErrorHandler
is fired
can also be configured:
>>> from logging import INFO
>>> e = ErrorHandler(INFO)
Debugging messages still don’t trigger:
>>> logger.debug('debugging')
>>> e.fired
False
But now informational messages do:
>>> logger.info('some information')
>>> e.fired
True
Installing and removing the handler¶
By default, the ErrorHandler
is installed when it is created,
but this doesn’t have to be the case:
>>> e = ErrorHandler(install=False)
>>> logger.error('an error')
>>> e.fired
False
When you create an ErrorHandler
like this, you have to
install it before log messages will cause it to become fired:
>>> e.install()
>>> logger.error('an error')
>>> e.fired
True
However, it’s always good practice to remove the handler when you’re done, like this:
>>> e.remove()