Skip to content
Snippets Groups Projects
Commit 9093917f authored by Erik Reid's avatar Erik Reid
Browse files

Finished feature response-logging.

parents ab4e03e3 e1a7e5aa
No related branches found
No related tags found
No related merge requests found
...@@ -5,6 +5,8 @@ import logging ...@@ -5,6 +5,8 @@ import logging
import os import os
from flask import Flask from flask import Flask
from inventory_provider import environment
def create_app(): def create_app():
""" """
...@@ -21,6 +23,8 @@ def create_app(): ...@@ -21,6 +23,8 @@ def create_app():
app = Flask(__name__) app = Flask(__name__)
app.secret_key = "super secret session key" app.secret_key = "super secret session key"
environment.setup_logging()
from inventory_provider.routes import default from inventory_provider.routes import default
app.register_blueprint(default.routes, url_prefix='/') app.register_blueprint(default.routes, url_prefix='/')
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
}, },
"root": { "root": {
"level": "WARNING", "level": "DEBUG",
"handlers": ["console", "syslog_handler"] "handlers": ["console", "syslog_handler"]
} }
} }
\ No newline at end of file
...@@ -38,6 +38,11 @@ def handle_request_error(error): ...@@ -38,6 +38,11 @@ def handle_request_error(error):
status=error.status_code) status=error.status_code)
@routes.after_request
def after_request(resp):
return common.after_request(resp)
def base_interface_name(interface): def base_interface_name(interface):
m = re.match(r'(.*?)(\.\d+)?$', interface) m = re.match(r'(.*?)(\.\d+)?$', interface)
assert m # sanity: anything should match assert m # sanity: anything should match
......
import functools import functools
import logging
from flask import request, Response, current_app, g from flask import request, Response, current_app, g
import redis import redis
logger = logging.getLogger(__name__)
def get_redis(): def get_redis():
if 'redis_db' not in g: if 'redis_db' not in g:
...@@ -31,3 +34,26 @@ def require_accepts_json(f): ...@@ -31,3 +34,26 @@ def require_accepts_json(f):
mimetype="text/html") mimetype="text/html")
return f(*args, **kwargs) return f(*args, **kwargs)
return decorated_function return decorated_function
def after_request(response):
"""
generic function to do additional logging of requests & responses
:param response:
:return:
"""
if response.status_code != 200:
try:
data = response.data.decode('utf-8')
except Exception:
# never expected to happen, but we don't want any failures here
logging.exception('INTERNAL DECODING ERROR')
data = 'decoding error (see logs)'
logger.warning('"%s %s" "%s" %s' % (
request.method,
request.path,
data,
str(response.status_code)))
return response
...@@ -10,6 +10,11 @@ from inventory_provider.db import opsdb ...@@ -10,6 +10,11 @@ from inventory_provider.db import opsdb
routes = Blueprint("inventory-data-query-routes", __name__) routes = Blueprint("inventory-data-query-routes", __name__)
@routes.after_request
def after_request(resp):
return common.after_request(resp)
@routes.route("/routers", methods=['GET', 'POST']) @routes.route("/routers", methods=['GET', 'POST'])
@common.require_accepts_json @common.require_accepts_json
def routers(): def routers():
......
...@@ -8,6 +8,11 @@ routes = Blueprint("inventory-data-default-routes", __name__) ...@@ -8,6 +8,11 @@ routes = Blueprint("inventory-data-default-routes", __name__)
API_VERSION = '0.1' API_VERSION = '0.1'
@routes.after_request
def after_request(resp):
return common.after_request(resp)
@routes.route("/version", methods=['GET', 'POST']) @routes.route("/version", methods=['GET', 'POST'])
@common.require_accepts_json @common.require_accepts_json
def version(): def version():
......
...@@ -5,6 +5,11 @@ from inventory_provider.routes import common ...@@ -5,6 +5,11 @@ from inventory_provider.routes import common
routes = Blueprint("inventory-data-job-routes", __name__) routes = Blueprint("inventory-data-job-routes", __name__)
@routes.after_request
def after_request(resp):
return common.after_request(resp)
@routes.route("/update", methods=['GET', 'POST']) @routes.route("/update", methods=['GET', 'POST'])
@common.require_accepts_json @common.require_accepts_json
def update(): def update():
......
...@@ -8,6 +8,11 @@ from inventory_provider.routes import common ...@@ -8,6 +8,11 @@ from inventory_provider.routes import common
routes = Blueprint('poller-support-routes', __name__) routes = Blueprint('poller-support-routes', __name__)
@routes.after_request
def after_request(resp):
return common.after_request(resp)
@routes.route('/interfaces/<hostname>', methods=['GET', 'POST']) @routes.route('/interfaces/<hostname>', methods=['GET', 'POST'])
@common.require_accepts_json @common.require_accepts_json
def poller_interface_oids(hostname): def poller_interface_oids(hostname):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment