Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Default values for logging parameter to facilitate regex #47

Merged
merged 1 commit into from
Nov 27, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions solr/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,11 @@ class SolrInterface(Resource):
def __init__(self, *args, **kwargs):
Resource.__init__(self, *args, **kwargs)
self._host = None
self.internal_logging_params = ('X-Amzn-Trace-Id', 'Authorization', 'X-Forwarded-Authorization') # Pass to solr/clean from response, only for logging purposes
self.internal_logging_params = {
'X-Amzn-Trace-Id': 'Root=-',
'Authorization': 'Bearer:-',
'X-Forwarded-Authorization': 'Bearer:-',
} # Pass to solr/clean from response, only for logging purposes

def get(self):
query, headers = self.cleanup_solr_request(dict(request.args))
Expand Down Expand Up @@ -134,7 +138,7 @@ def cleanup_solr_response_text(self, text):
try:
r = json.loads(text)
params = r.get('responseHeader', {}).get('params', {})
for internal_param in self.internal_logging_params:
for internal_param in self.internal_logging_params.keys():
params.pop(internal_param, None)
clean_text = unicode(json.dumps(r)+'\n')
return clean_text
Expand Down Expand Up @@ -163,10 +167,13 @@ def cleanup_solr_request(self, payload, user_id=None):

# trace id, Host, token header are important for proper routing/logging
headers['Host'] = self.get_host(current_app.config.get(self.handler))
for internal_param in self.internal_logging_params:
for internal_param, default in self.internal_logging_params.iteritems():
if internal_param in request.headers:
payload[internal_param] = request.headers[internal_param]
headers[internal_param] = request.headers[internal_param]
else:
# Make sure solr always reports the parameter to facilitate regex logging parsing
payload[internal_param] = default

payload['wt'] = 'json'
max_rows = current_app.config.get('SOLR_SERVICE_MAX_ROWS', 100)
Expand Down Expand Up @@ -330,9 +337,10 @@ def _get_stream_data(self, params, streams, request):
new_headers = {'Authorization': request.headers['Authorization']}
# trace id, Host, token header are important for proper routing/logging
new_headers['Host'] = self.get_host(current_app.config.get(self.handler))
for internal_param in self.internal_logging_params:
for internal_param in self.internal_logging_params.keys():
if internal_param in request.headers:
new_headers[internal_param] = request.headers[internal_param]

docs = None

if prefix == 'library':
Expand Down