Another possibility is to override of the ModelResource.dispatch()
method, in a custom ModelResource
object:
class CustomModelResource(ModelResource):
def dispatch(self, request_type, request, **kwargs):
"""
Override for systematic logging.
"""
log_user = request.META['USER']
log_request_type = request_type
log_resource_name = kwargs['resource_name']
log_api_name = kwargs['api_name']
log_response = {}
try:
response = super(CustomModelResource, self).dispatch(request_type, request, **kwargs)
log_response['response_code'] = response.status_code
# Also log what could go wrong
except Exception, e:
log_response['error_type'] = e.__class__.__name__
log_response['error_message'] = e.message
log_response['response_code'] = http.HttpBadRequest.status_code
raise
finally:
# Log all the things
logger.debug('%s asked for %s on %s through api %s: \n%s' % (
log_user,
log_request_type,
log_resource_name,
log_api_name,
log_response,
))
return response
class Meta:
# Other custom stuff