import logging

from django.http import HttpRequest


class RequestFormatter(logging.Formatter):
    def format(self, record):
        request = getattr(record, 'request', None)

        if isinstance(request, HttpRequest):
            ip = request.META.get('HTTP_X_FORWARDED_FOR')

            if not ip:
                ip = request.META.get('REMOTE_ADDR')

            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)
