Skip to content

Instantly share code, notes, and snippets.

@danielrichman
Last active December 19, 2015 03:48
Show Gist options
  • Save danielrichman/5892462 to your computer and use it in GitHub Desktop.
Save danielrichman/5892462 to your computer and use it in GitHub Desktop.
logging formatter that appends details of a flask request to a log record (in much the same way that the default formatter appends a traceback)
class FlaskFormatter(logging.Formatter):
def format(self, record):
s = super(FlaskFormatter, self).format(record)
try:
if flask.has_request_context():
if s[-1:] != "\n":
s = s + "\n"
s += self.formatRequest(flask.request, flask.session)
except:
pass
return s
def formatRequest(self, request, session):
bits = ["\nFlask Request: {r.method} {r.base_url!r}\n"
"endpoint {r.endpoint}\n\n"
.format(r=request)]
def dump_dict(bits, key, items):
bits.append("{0}:\n".format(key))
bits += [" {0!r}: {1!r}\n".format(k, v) for k, v in items]
bits.append("\n")
dump_dict(bits, "args", request.args.iteritems(True))
dump_dict(bits, "form", request.form.iteritems(True))
dump_dict(bits, "cookies", request.cookies.iteritems())
dump_dict(bits, "headers", request.headers.iteritems())
dump_dict(bits, "session", session.iteritems())
bits.append("data:\n {0}".format(request.data))
return ''.join(bits)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment