Skip to content
This repository has been archived by the owner on Jan 31, 2020. It is now read-only.

Commit

Permalink
Merge pull request #12 from mkiwala/logging
Browse files Browse the repository at this point in the history
Logging
  • Loading branch information
davidlmorton committed Jan 27, 2015
2 parents 5726a81 + 0fd3e9e commit 78d2104
Showing 1 changed file with 28 additions and 8 deletions.
36 changes: 28 additions & 8 deletions ptero_common/logging_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

try:
from flask import request
from werkzeug.wrappers import BaseResponse as Response
except:
# Not everybody who uses ptero_common has requires/uses flask
pass
Expand All @@ -24,6 +25,17 @@ def configure_celery_logging(service_name):
logging.getLogger('kombu').setLevel(
os.environ.get('PTERO_%s_KOMBU_LOG_LEVEL' % service_name, 'WARN'))

def configure_web_logging(service_name):
configure_logging(
'PTERO_%s_LOG_LEVEL' % service_name,
'PTERO_%s_LOG_WITH_TIMESTAMPS' % service_name)
logging.getLogger('pika').setLevel(
os.environ.get('PTERO_%s_PIKA_LOG_LEVEL' % service_name, 'WARN'))
logging.getLogger('requests').setLevel(
os.environ.get('PTERO_%s_REQUESTS_LOG_LEVEL' % service_name, 'WARN'))
logging.getLogger('werkzeug').setLevel(
os.environ.get('PTERO_%s_WERKZEUG_LOG_LEVEL' % service_name, 'WARN'))


def configure_logging(level_env_var, time_env_var):
if int(os.environ.get(time_env_var, "1")):
Expand All @@ -38,20 +50,28 @@ def configure_logging(level_env_var, time_env_var):
level=os.environ.get(level_env_var, 'INFO').upper())


def log_response(logger):
def logged_response(logger):
def _log_response(target):
def wrapper(*args, **kwargs):
body, code = target(*args, **kwargs)

try:
result = target(*args, **kwargs)
except Exception as e:
logger.exception(
"Unexpected exception while handling %s %s:\n"
"Body: %s\n%s",
target.__name__.upper(), request.url, request.data, str(e))
raise
response = Response(*result)
logger.info("Responded %s to %s %s",
code, target.__name__.upper(), request.url)
logger.debug(" Body: %s", body)
return body, code
response.status_code, target.__name__.upper(), request.url)
logger.debug(" Headers: '%s'", response.headers)
logger.debug(" Body: '%s'", response.get_data())
return result
return wrapper
return _log_response


def log_request(target, kind):
def _log_request(target, kind):
def wrapper(*args, **kwargs):
logger = kwargs.get('logger', logging.getLogger(__name__))
if 'logger' in kwargs:
Expand All @@ -72,5 +92,5 @@ def wrapper(*args, **kwargs):

class LoggedRequest(object):
def __getattr__(self, name):
return log_request(getattr(requests, name), name)
return _log_request(getattr(requests, name), name)
logged_request = LoggedRequest()

0 comments on commit 78d2104

Please sign in to comment.