import logging from django.http import HttpRequest class RequestFormatter(logging.Formatter): def format(self, record): request = getattr(record, 'request', None) if isinstance(request, HttpRequest): # مرحله ۱: از X-Forwarded-For (در صورت وجود) ip = request.META.get('HTTP_X_FORWARDED_FOR') # مرحله ۲: از REMOTE_ADDR if not ip: ip = request.META.get('REMOTE_ADDR') # مرحله ۳: اگر هنوز چیزی نیست، مقدار پیش‌فرض بده (مثلاً localhost) if not ip: ip = '127.0.0.1' # تمیزکاری برای لیست آی‌پی‌ها if ',' in ip: ip = ip.split(',')[0].strip() record.client_ip = ip record.path = request.path else: record.client_ip = '-' record.path = '-' return super().format(record)