У меня есть приложение Django, каждый вызов API которого связан с транзакцией_id. Я хочу создать отдельные файлы журнала для каждого транзакции.
Проще говоря, я хочу иметь несколько файлов, которые я буду использовать для регистрации.
Как я могу сделать это, используя встроенную систему регистрации Django?
Я могу иметь несколько обработчиков в одном логгере. Но согласно моему требованию FileHandlers должен быть добавлен во время выполнения, чье имя файла будет транзакцией_id. Это можно сделать. Но проблема в том, что если у меня одновременно запущено 4 транзакции, к одному и тому же регистратору будут добавлены 4 обработчика, и в соответствии с документацией журналы будут отправляться каждому обработчику, в результате чего 1 файл журнала транзакций также регистрирует остальные 3 журнала транзакций.
Вот то, с чем я пришел:
class TransactionLogger:
def __init__(self, transaction_id):
self.logger = logging.getLogger('transaction_logger')
logger = self.logger
fileHandler = logging.FileHandler(transaction_id, mode='a')
formatter = logging.Formatter('%(levelname)s %(asctime)s %(filename)s:%(lineno)s - %(funcName)s() ] %(message)s')
fileHandler.setFormatter(formatter)
self.logger.addHandler(fileHandler)
self.logger.propagate = False
В начале каждой транзакции я создаю экземпляр регистратора как:
logger = TransactionLogger(transaction_id).logger
и запишите следующее:
logger.debug("Hello World")
Как я могу поддерживать n файлов журналов, которые будут генерироваться динамически, и регистрироваться в каждом файле на основе транзакции_id, не мешая другим файлам.
Любая помощь приветствуется.