from __future__ import unicode_literals

import logging

from django.core.exceptions import PermissionDenied
from django.http import Http404
from django.utils.deprecation import MiddlewareMixin

logger = logging.getLogger(__name__)


class ErrorLoggingMiddleware(MiddlewareMixin):
    def process_exception(self, request, exception):
        if not isinstance(exception, (PermissionDenied, Http404)):
            # Don't log non critical exceptions
            logger.exception(
                'Exception caught by request middleware; %s, %s', request,
                exception
            )
