Reputation: 323
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
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
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
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