Skip to content

Instantly share code, notes, and snippets.

@saml
Last active November 28, 2018 15:02
Show Gist options
  • Select an option

  • Save saml/5d0efd24311feb4780a48db0beff67c7 to your computer and use it in GitHub Desktop.

Select an option

Save saml/5d0efd24311feb4780a48db0beff67c7 to your computer and use it in GitHub Desktop.
from contextlib import contextmanager
import logging
_log = logging.getLogger(__name__)
class MyFilter:
def __init__(self, **kwargs):
self.kwargs = kwargs
def filter(self, record):
record.msg += ' ' + ' '.join('{}={}'.format(k, v) for k, v in self.kwargs.items())
return True
@contextmanager
def log_context(**kwargs):
log_filter = MyFilter(**kwargs)
root_logger = logging.getLogger()
for handler in root_logger.handlers:
handler.addFilter(log_filter)
yield log_filter
for handler in root_logger.handlers:
handler.removeFilter(log_filter)
def f():
_log.info('hi')
if __name__ == '__main__':
logging.basicConfig(level='DEBUG', format='%(asctime)s %(name)s:%(lineno)d %(levelname)s %(message)s')
f()
with log_context(foo='bar'):
f()
f()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment