Merge pull request #1644 from ketanbhatt/feat/1546/http-api-logger-logs-path-and-method

HTTP API Logger logs request path and method too
This commit is contained in:
vrde 2017-08-03 09:53:18 +02:00 committed by GitHub
commit f5f964d07a
2 changed files with 27 additions and 14 deletions

View File

@ -3,7 +3,7 @@ Common classes and methods for API handlers
"""
import logging
from flask import jsonify
from flask import jsonify, request
from bigchaindb import config
@ -14,8 +14,13 @@ logger = logging.getLogger(__name__)
def make_error(status_code, message=None):
if status_code == 404 and message is None:
message = 'Not found'
response_content = {'status': status_code, 'message': message}
logger.error('HTTP API error: %(status)s - %(message)s', response_content)
request_info = {'method': request.method, 'path': request.path}
request_info.update(response_content)
logger.error('HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s', request_info)
response = jsonify(response_content)
response.status_code = status_code
return response

View File

@ -67,12 +67,14 @@ def test_post_create_transaction_with_invalid_id(mock_logger, b, client):
assert res.json['message'] == expected_error_message
assert mock_logger.error.called
assert (
'HTTP API error: %(status)s - %(message)s' in
'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in
mock_logger.error.call_args[0]
)
assert (
{'message': expected_error_message, 'status': expected_status_code} in
mock_logger.error.call_args[0]
{
'message': expected_error_message, 'status': expected_status_code,
'method': 'POST', 'path': TX_ENDPOINT
} in mock_logger.error.call_args[0]
)
# TODO put back caplog based asserts once possible
# assert caplog.records[0].args['status'] == expected_status_code
@ -101,12 +103,14 @@ def test_post_create_transaction_with_invalid_signature(mock_logger,
assert res.json['message'] == expected_error_message
assert mock_logger.error.called
assert (
'HTTP API error: %(status)s - %(message)s' in
'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in
mock_logger.error.call_args[0]
)
assert (
{'message': expected_error_message, 'status': expected_status_code} in
mock_logger.error.call_args[0]
{
'message': expected_error_message, 'status': expected_status_code,
'method': 'POST', 'path': TX_ENDPOINT
} in mock_logger.error.call_args[0]
)
# TODO put back caplog based asserts once possible
# assert caplog.records[0].args['status'] == expected_status_code
@ -133,12 +137,14 @@ def test_post_create_transaction_with_invalid_schema(mock_logger, client):
assert res.json['message'] == expected_error_message
assert mock_logger.error.called
assert (
'HTTP API error: %(status)s - %(message)s' in
'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in
mock_logger.error.call_args[0]
)
assert (
{'message': expected_error_message, 'status': expected_status_code} in
mock_logger.error.call_args[0]
{
'message': expected_error_message, 'status': expected_status_code,
'method': 'POST', 'path': TX_ENDPOINT
} in mock_logger.error.call_args[0]
)
# TODO put back caplog based asserts once possible
# assert caplog.records[0].args['status'] == expected_status_code
@ -176,12 +182,14 @@ def test_post_invalid_transaction(mock_logger, client, exc, msg, monkeypatch,):
'Invalid transaction ({}): {}'.format(exc, msg))
assert mock_logger.error.called
assert (
'HTTP API error: %(status)s - %(message)s' in
'HTTP API error: %(status)s - %(method)s:%(path)s - %(message)s' in
mock_logger.error.call_args[0]
)
assert (
{'message': expected_error_message, 'status': expected_status_code} in
mock_logger.error.call_args[0]
{
'message': expected_error_message, 'status': expected_status_code,
'method': 'POST', 'path': TX_ENDPOINT
} in mock_logger.error.call_args[0]
)
# TODO put back caplog based asserts once possible
# assert caplog.records[2].args['status'] == expected_status_code