# Auth Service Login Failure Fix ## Issue Description The auth service was failing during login with the following error: ``` Session error: Logger._log() got an unexpected keyword argument 'tenant_service_url' ``` This error occurred in the `SubscriptionFetcher` class when it tried to log initialization information using keyword arguments that are not supported by the standard Python logging module. ## Root Cause The issue was caused by incorrect usage of the Python logging module. The code was trying to use keyword arguments in logging calls like this: ```python logger.info("SubscriptionFetcher initialized", tenant_service_url=self.tenant_service_url) ``` However, the standard Python logging module's `_log()` method does not support arbitrary keyword arguments. This is a common misunderstanding - some logging libraries like `structlog` support this pattern, but the standard `logging` module does not. ## Files Fixed 1. **services/auth/app/utils/subscription_fetcher.py** - Fixed `logger.info()` call in `__init__()` method - Fixed `logger.debug()` calls in `get_user_subscription_context()` method 2. **services/auth/app/services/auth_service.py** - Fixed multiple `logger.warning()` and `logger.error()` calls ## Changes Made ### Before (Problematic): ```python logger.info("SubscriptionFetcher initialized", tenant_service_url=self.tenant_service_url) logger.debug("Fetching subscription data for user", user_id=user_id) logger.warning("Failed to publish registration event", error=str(e)) ``` ### After (Fixed): ```python logger.info("SubscriptionFetcher initialized with URL: %s", self.tenant_service_url) logger.debug("Fetching subscription data for user: %s", user_id) logger.warning("Failed to publish registration event: %s", str(e)) ``` ## Impact - ✅ Login functionality now works correctly - ✅ All logging calls use the proper Python logging format - ✅ Error messages are still informative and include all necessary details - ✅ No functional changes to the business logic - ✅ Maintains backward compatibility ## Testing The fix has been verified to: 1. Resolve the login failure issue 2. Maintain proper logging functionality 3. Preserve all error information in log messages 4. Work with the existing logging configuration ## Prevention To prevent similar issues in the future: 1. Use string formatting (`%s`) for variable data in logging calls 2. Avoid using keyword arguments with the standard `logging` module 3. Consider using `structlog` if structured logging with keyword arguments is needed 4. Add logging tests to CI/CD pipeline to catch similar issues early