各 API 呼び出しが transaction_id に関連付けられている Django アプリケーションがあります。transaction_id ごとに個別のログ ファイルを作成したいと考えています。簡単に言えば、ログに使用する複数のファイルが必要です。
Django のビルトイン ロギング システムを使用してこれを行うにはどうすればよいですか?
1 つのロガーに複数のハンドラーを含めることができます。しかし、私の要件によれば、ファイル名が transaction_id になる FileHandlers を実行時に追加する必要があります。これは可能です。しかし、問題は、一度に 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 個のログ ファイルを維持し、他のファイルに干渉することなく、transaction_id に基づいて各ファイルにログインするにはどうすればよいですか。
どんな助けでも大歓迎です。