Skip to content

Commit

Permalink
Merge pull request #1336 from untitaker/logging-refactor
Browse files Browse the repository at this point in the history
Try not to stringify exception in logging messages
  • Loading branch information
yunstanford committed Oct 13, 2018
2 parents 0cad831 + eb93f88 commit 619bb79
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 21 deletions.
2 changes: 1 addition & 1 deletion sanic/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,4 @@
" Example Module: project.sanic_server.app"
.format(e.name))
except ValueError as e:
logger.error("{}".format(e))
logger.exception("Failed to run app")
34 changes: 19 additions & 15 deletions sanic/handlers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import sys
from traceback import format_exc, extract_tb
from traceback import extract_tb, format_exc

from sanic.exceptions import (
ContentRangeError,
Expand Down Expand Up @@ -84,28 +84,35 @@ def response(self, request, exception):
response = self.default(request, exception)
except Exception:
self.log(format_exc())
try:
url = repr(request.url)
except AttributeError:
url = "unknown"
response_message = ('Exception raised in exception handler '
'"%s" for uri: %s')
logger.exception(response_message, handler.__name__, url)

if self.debug:
url = getattr(request, 'url', 'unknown')
response_message = ('Exception raised in exception handler '
'"%s" for uri: "%s"\n%s')
logger.error(response_message,
handler.__name__, url, format_exc())

return text(response_message % (
handler.__name__, url, format_exc()), 500)
return text(response_message % (handler.__name__, url), 500)
else:
return text('An error occurred while handling an error', 500)
return response

def log(self, message, level='error'):
"""
Override this method in an ErrorHandler subclass to prevent
logging exceptions.
Deprecated, do not use.
"""
getattr(logger, level)(message)

def default(self, request, exception):
self.log(format_exc())
try:
url = repr(request.url)
except AttributeError:
url = "unknown"

response_message = ('Exception occurred while handling uri: %s')
logger.exception(response_message, url)

if issubclass(type(exception), SanicException):
return text(
'Error: {}'.format(exception),
Expand All @@ -115,9 +122,6 @@ def default(self, request, exception):
elif self.debug:
html_output = self._render_traceback_html(exception, request)

response_message = ('Exception occurred while handling uri: '
'"%s"\n%s')
logger.error(response_message, request.url, format_exc())
return html(html_output, status=500)
else:
return html(INTERNAL_SERVER_ERROR_HTML, status=500)
Expand Down
2 changes: 1 addition & 1 deletion sanic/log.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,6 @@
)


logger = logging.getLogger('root')
logger = logging.getLogger('sanic.root')
error_logger = logging.getLogger('sanic.error')
access_logger = logging.getLogger('sanic.access')
2 changes: 1 addition & 1 deletion sanic/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,7 @@ def bail_out(self, message, from_error=False):
logger.error("Transport closed @ %s and exception "
"experienced during error handling",
self.transport.get_extra_info('peername'))
logger.debug('Exception:\n%s', traceback.format_exc())
logger.debug('Exception:', exc_info=True)
else:
self.write_error(ServerError(message))
logger.error(message)
Expand Down
4 changes: 1 addition & 3 deletions sanic/testing.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import traceback
from json import JSONDecodeError
from sanic.log import logger
from sanic.exceptions import MethodNotSupported
Expand Down Expand Up @@ -73,8 +72,7 @@ async def _collect_response(sanic, loop):
**request_kwargs)
results[-1] = response
except Exception as e:
logger.error(
'Exception:\n{}'.format(traceback.format_exc()))
logger.exception('Exception')
exceptions.append(e)
self.app.stop()

Expand Down

0 comments on commit 619bb79

Please sign in to comment.