Tinker
Tinker

Reputation: 4525

Flask Json Request 400 logging?

I wrote my own custom client which sends raw http requests via my wifi card to my flask webserver.

This is what a typical requests looks like:

Content-Length: 214
User-Agent: blah
Connection: close
Host: 1.2.3.4:5000
Content-Type: application/json

{"data":[{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.28"},{"scoutId":2,"message":"ph=5.65"},{"scoutId":4,"message":"ph=4.28"},{"scoutId":3,"message":"ph=4.30"}]}

Sometimes, my clients screw up and send malformed JSON requests to my flask server. Typically, flask will just display:

1.2.3.5 - - [01/Sep/2014 22:13:03] "POST / HTTP/1.1" 400 -

and nothing informative about the request.

I would like to track every single request that resulted in 400 in my environment and analyze what is causing these errors.

Where can I place my custom error function in my flask server?

Upvotes: 3

Views: 1346

Answers (1)

Steven Kryskalla
Steven Kryskalla

Reputation: 14649

Try turning this on:

app.config['TRAP_BAD_REQUEST_ERRORS'] = True

This should make flask raise an exception instead of just logging the 400 (see documentation here).

If you need to do something more than that, make an event handler:

http://flask.pocoo.org/docs/0.10/patterns/errorpages/

@app.errorhandler(400)
def page_not_found(exc):
    #do something with the exception object `exc` here
    ....

Or try wrapping the body of your view function in try/except.

Upvotes: 6

Related Questions