0

Django Web アプリケーションでカスタム ロギングを実装するために LoggingAdapter を使用しています。

logger=logging.getLogger("billingacct")

class LoggerAdapter(logging.LoggerAdapter):
  def __init__(self, logger, prefix):
    self.logger = logger
    self.logger.propagate = False
    super(LoggerAdapter, self).__init__(logger, {})
    self.prefix=None
    self.prefix = prefix

  def process(self, msg, kwargs):
    return '[%s] %s' % (self.prefix, msg), kwargs

Web アプリケーションのエントリ ポイントである login メソッドでこれを呼び出しています。

  def login(request):
    logger = LoggerAdapter(logger, email)
    #After this i start printing the logs
    logger.info("Test")

次のように、ログインしたユーザーの電子メールが出力されます。

2021-03-16 15:35:53,074 - billingacct - INFO - [user@xyz.com] Test

しかし、アプリケーションからサインアウトしてアプリに再ログインすると、同じプレフィックス (電子メール) が 2 回追加されるか、元のプレフィックスがまだ次のように表示されます。

2021-03-16 15:44:53,074 - billingacct - INFO - [user@xyz.com][user@xyz.com] Test

これはおそらく、元の LoggingAdapter オブジェクトがまだプレフィックスを保持しているため、追加されるためです。Python と Django は初めてです。次に何を試すことができますか?

4

0 に答える 0