diff --git a/README.rst b/README.rst index 88d5b1f..96afe95 100644 --- a/README.rst +++ b/README.rst @@ -47,3 +47,18 @@ Using logger logger.warn('warn message') logger.error('error message') logger.critical('critical message') + +Using filter +'''''''''''' + +You can also filter some messages only + +.. code-block:: python + + from slack_logger import SlackLogFilter + + sf = SlackLogFilter() + sh.addFilter(sf) + + logger.info('info message') # Not posted to slack + logger.info('info message to slack', extra={'notify_slack': True}) # Posted to slack diff --git a/slack_logger.py b/slack_logger.py index 0962807..5bba91b 100644 --- a/slack_logger.py +++ b/slack_logger.py @@ -58,3 +58,15 @@ def format(self, record): ret['ts'] = record.created ret['text'] = super(SlackFormatter, self).format(record) return ret + + +class SlackLogFilter(logging.Filter): + """ + Logging filter to decide when logging to Slack is requested, using + the `extra` kwargs: + + `logger.info("...", extra={'notify_slack': True})` + """ + + def filter(self, record): + return getattr(record, 'notify_slack', False)