Skip to content

Instantly share code, notes, and snippets.

@bmwant
Created November 16, 2017 12:22
Show Gist options
  • Save bmwant/5906485b1c7b66e021f4650d169986f5 to your computer and use it in GitHub Desktop.
Save bmwant/5906485b1c7b66e021f4650d169986f5 to your computer and use it in GitHub Desktop.
Logging adapter with extra info
import logging
class Runner(object):
def __init__(self):
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
adapter = CustomAdapter(logger, {'runner': self})
# adapter.debug('Some debug message')
# adapter.warning('Some warning message')
self.i = 0
self.logger = adapter
@property
def _project(self):
self.i += 1
if self.i <= 4:
return {
'_id': 'MBTEST-PROJECT-ID'
}
else:
return {
'_id': 'MBTEST-PROJECT-ID',
'datarobot_project_id': 'IDIDIIDIDI'
}
class CustomAdapter(logging.LoggerAdapter):
def process(self, msg, kwargs):
runner = self.extra['runner']
mbtest_project_id = '<mbtest_project_id:{pid}>'.format(
pid=runner._project['_id'])
project_id = runner._project.get('datarobot_project_id', mbtest_project_id)
return '[%s] %s' % (project_id, msg), kwargs
r = Runner()
r.logger.debug('Debug message')
r.logger.info('Info message')
r.logger.warning('Warining message')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment