Kabiljan Tanaguzov
Kabiljan Tanaguzov

Reputation: 323

Writing serializer errors to the logger. Django rest

I have a logger that records actions in a view. I successfully record all completed requests, but I cannot figure out how to write validation errors of the serializer, for example, if I entered a date out of format, I want to write to the logger

logger.warning('Error Incorrectly entered data {}'.format(Output serializer error here)

Where and how should I log my message to the logger?

my code

views.py


logger = logging.getLogger(__name__)


class EventView(viewsets.ModelViewSet):
    queryset = Event.objects.all()
    lookup_field = 'pk'
    serializer_class = EventSerializer
    permission_classes = [ProjectPermission.IsPartner | ProjectPermission.IsAdmin]

    def perform_create(self, serializer):
        serializer.save(partnerId=self.request.user.user)

    @action(detail=True, methods=['get'])
    def getEvent(self, request, *args, **kwargs):
        response = self.retrieve(request, *args, **kwargs)
        logger.debug('Event {} name was get'.format(response.data))
        return response

    @action(detail=True, methods=['put'])
    def putEvent(self, request, *args, **kwargs):
        response = self.update(request, *args, **kwargs)
        logger.debug('Event {} was change'.format(response.data))
        return response

    @action(detail=True, methods=['delete'])
    def deleteEvent(self, request, *args, **kwargs):
        response = self.destroy(request, *args, **kwargs)
        logger.debug('Event {} was delete'.format(response.data))
        return response

    @action(detail=True, methods=['post'])
    def postEvent(self, request, *args, **kwargs):
        response = self.create(request, *args, **kwargs)
        logger.debug('Event {} was delete'.format(response.data))
        return response

serializers.py

class EventSerializer(serializers.ModelSerializer):
    start_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')
    end_date = serializers.DateTimeField(format='%d-%m-%YT%H:%M:%SZ')

    class Meta:
        model = Event
        fields = ('id', 'title', 'description', 'start_date', 'end_date', 'cover_page_url', 'address', 'city', 'sportType',
                  'participantLimit', 'generalInformation', 'enabled', 'partnerId'
                  )
        extra_kwargs = {"partnerId": {'read_only': True}}

Upvotes: 0

Views: 751

Answers (1)

Muslimbek Abduganiev
Muslimbek Abduganiev

Reputation: 941

You can check for validity of your data with serializer.is_valid(). So when it returns False, you can write to the logger.

Upvotes: 1

Related Questions