The way this solution inspects the flask context at the time of record formatting, rather than creation, is evil. Here is a better solution: https://gist.github.com/danielrichman/1acbbd66166ab857c404
Last active
December 19, 2015 03:48
-
-
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)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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