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 は初めてです。次に何を試すことができますか?