烧瓶应用的打印顺序不一致



每次向此 url 发出请求时,程序都会不一致地打印错误。此错误跟踪的最后 2 行打印一些调试信息。打印行包括文本架构和 JSON。到处都是,不适合我的调试方式,如何确保一致的打印顺序?

[2018-05-12 22:59:09,766] ERROR in app: Exception on /test [GET]
Traceback (most recent call last):
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/matt/PycharmProjects/WebService/app.py", line 13, in test
validation.validate("{'asdf':'testing title'}")
File "/Users/matt/PycharmProjects/WebService/model/series/seriesValidator.py", line 21, in validate
ModelValidator.validate(self, json)
File "/Users/matt/PycharmProjects/WebService/validate.py", line 16, in validate
errors = [e for e in validator.iter_errors(json)]
AttributeError: 'NoneType' object has no attribute 'iter_errors'
JSON:  {'asdf':'testing title'}
SCHEMA:  {'$schema': 'http://json-schema.org/schema#', 'required': ['title'], 'type': 'object', 'properties': {'description': {'type': 'string'}, 'title': {'type': 'string'}}}
127.0.0.1 - - [12/May/2018 22:59:09] "GET /test HTTP/1.1" 500 -
J

然后我又提出了 2 个请求,但它不一致:

JSON:  {'asdf':'testing title'}
SCHEMA:  {'$schema': 'http://json-schema.org/schema#', 'required': ['title'], 'type': 'object', 'properties': {'description': {'type': 'string'}, 'title': {'type': 'string'}}}
[2018-05-12 22:59:18,102] ERROR in app: Exception on /test [GET]
Traceback (most recent call last):
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/matt/PycharmProjects/WebService/app.py", line 13, in test
validation.validate("{'asdf':'testing title'}")
File "/Users/matt/PycharmProjects/WebService/model/series/seriesValidator.py", line 21, in validate
ModelValidator.validate(self, json)
File "/Users/matt/PycharmProjects/WebService/validate.py", line 16, in validate
errors = [e for e in validator.iter_errors(json)]
AttributeError: 'NoneType' object has no attribute 'iter_errors'
127.0.0.1 - - [12/May/2018 22:59:18] "GET /test HTTP/1.1" 500 -
JSON:  {'asdf':'testing title'}
[2018-05-12 22:59:42,329] ERROR in app: Exception on /test [GET]
Traceback (most recent call last):
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1718, in handle_user_exception
SCHEMA:  {'$schema': 'http://json-schema.org/schema#', 'required': ['title'], 'type': 'object', 'properties': {'description': {'type': 'string'}, 'title': {'type': 'string'}}}
reraise(exc_type, exc_value, tb)
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/Users/matt/PycharmProjects/WebService/venv/lib/python2.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/matt/PycharmProjects/WebService/app.py", line 13, in test
validation.validate("{'asdf':'testing title'}")
File "/Users/matt/PycharmProjects/WebService/model/series/seriesValidator.py", line 21, in validate
ModelValidator.validate(self, json)
File "/Users/matt/PycharmProjects/WebService/validate.py", line 16, in validate
errors = [e for e in validator.iter_errors(json)]
AttributeError: 'NoneType' object has no attribute 'iter_errors'
127.0.0.1 - - [12/May/2018 22:59:42] "GET /test HTTP/1.1" 500 -
print

转到stdout,回溯和日志记录转到stderr。两条流经常像这样交织在一起。如果您使用正确的日志记录,那么一切都会stderr并且一切都会好起来的。

在文件顶部,执行以下操作:

import logging
log = logging.getLogger(__name__)

然后,不要打印,而是执行以下操作:

log.info('JSON: %s', json_data)

您可能还必须配置日志记录才能在控制台中查看输出。

最新更新