При написании асинхронных программ на Python часто существует асинхронная функция, которая запускает много вызовов одновременно.Я хочу добавить некоторые записи в эту функцию, но выходные данные журнала из разных вызовов будут чередоваться, что усложнит отслеживание.Мое текущее решение состоит в том, чтобы каким-то образом создать уникальное имя для каждого вызова и регистрировать это имя каждый раз, например:
async def make_request(args):
logger = logging.getLogger('myscript.request')
log_name = unique_name()
logger.debug('[%s] making request with args %r', log_name, args)
response = await request(args)
logger.debug('[%s] response: %r', log_name, response)
Однако необходимость вставлять log_name
в каждый вызов регистрации утомляет довольно быстро.Чтобы сохранить эти нажатия клавиш, я придумал другое решение, создавая новый регистратор с уникальным именем для каждого вызова:
async def make_request(args):
logger = logging.getLogger(f'myscript.request.{unique_name()}')
logger.debug('making request with args %r', args)
response = await request(args)
logger.debug('response: %r', response)
Есть ли недостатки этого подхода?Единственное, о чем я могу думать, это то, что создание нового регистратора может быть дорогим, но так ли это на самом деле?Есть ли подводные камни, которых я не вижу?