With a help of good friend in Real python, I was able to solve the problem.
import sys
import logging
def get_id_logger():
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - '
'%(levelname)-8s - '
'[%(filename)s:%(lineno)d] - '
'{_id} - '
'%(message)s '.
format(_id=locals().get('_id', '')))
handler = logging.StreamHandler(sys.stdout)
handler.setFormatter(formatter)
logger.addHandler(handler)
return logger
def set_logger_id(logger, _id):
logger_format = '%(asctime)s - ' \
'%(levelname)-8s - ' \
'[%(filename)s:%(lineno)d] - ' \
'{_id} - ' \
'%(message)s '.\
format(_id=locals().get('_id', ''))
new_formatter = logging.Formatter(logger_format)
handlers = logger.handlers
for h in handlers:
h.setFormatter(new_formatter)
test_script.py:
from logger import get_id_logger, set_logger_id
logger = get_id_logger()
logger.debug('Lets test something without req_id')
req_id = 9870
set_logger_id(logger, req_id)
logger.info('Lets test something with req_id')
logger.info('Lets test something with req_id again')
logger.info('Lets test something with req_id again')
req_id = 3456
set_logger_id(logger, req_id)
logger.info('Lets test something with req_id again')
logger.debug('Lets test something with req_id again')