0

各 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 に基づいて各ファイルにログインするにはどうすればよいですか。

どんな助けでも大歓迎です。

4

1 に答える 1