diff --git a/tornado/web.py b/tornado/web.py index 3003fd8e0..953f2e4be 100644 --- a/tornado/web.py +++ b/tornado/web.py @@ -1911,9 +1911,10 @@ def log_exception( .. versionadded:: 3.1 """ if isinstance(value, HTTPError): - if value.log_message: - format = "%d %s: " + value.log_message - args = [value.status_code, self._request_summary()] + list(value.args) + log_message = value.get_message() + if log_message: + format = "%d %s: %s" + args = [value.status_code, self._request_summary(), log_message] gen_log.warning(format, *args) else: app_log.error( @@ -2521,13 +2522,18 @@ def __init__( self.args = args self.reason = kwargs.get("reason", None) + def get_message(self) -> Optional[str]: + if self.log_message and self.args: + return (self.log_message % self.args) + return self.log_message + def __str__(self) -> str: message = "HTTP %d: %s" % ( self.status_code, self.reason or httputil.responses.get(self.status_code, "Unknown"), ) - if self.log_message: - log_message = (self.log_message % self.args) if self.args else self.log_message + log_message = self.get_message() + if log_message: return message + " (" + log_message + ")" else: return message