Flask спецификация блока c конечные точки из журнала - PullRequest
1 голос
/ 25 мая 2020

У меня есть несколько ajax вызовов с боке в моем flask приложении, и для получения данных график боке каждую секунду выполняет POST-запрос к определенной конечной точке, теперь я постоянно получаю такой вывод:

127.0.0.1 - - [25/May/2020 12:50:17] "POST /statusdata/ HTTP/1.1" 200 -
127.0.0.1 - - [25/May/2020 12:50:17] "POST /statusdata/ HTTP/1.1" 200 -
127.0.0.1 - - [25/May/2020 12:50:19] "POST /statusdata/ HTTP/1.1" 200 -
127.0.0.1 - - [25/May/2020 12:50:19] "POST /statusdata/ HTTP/1.1" 200 -

Как я могу исключить route / statusdata / из журнала отладки flask? Спасибо за помощь!

1 Ответ

0 голосов
/ 25 мая 2020

Вы можете добавить в регистратор настраиваемый фильтр для поиска имени маршрута. Если вы просто используете сервер разработки, это будет обработчик werkzeug. Когда вы перейдете к производству, вам нужно будет найти обработчик спецификаций c. Полный пример (который вы можете отслеживать в консоли браузера, чтобы подтвердить, что форма была отправлена, несмотря на отсутствие записи на сервере):

from flask import Flask, render_template_string
import logging


class AjaxFilter(logging.Filter):
    def filter(self, record):  
        return "statusdata" not in record.getMessage()

log = logging.getLogger('werkzeug')
log.addFilter(AjaxFilter())


home_template = """
<form method="post" action="{{ url_for('route_a') }}" class="testAjax">
<input type="submit" value="submit A">
</form>

<form method="post" action="{{ url_for('statusdata') }}" class="testAjax">
<input type="submit" value="submit B">
</form>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
   $(".testAjax").submit(function(e) {
       e.preventDefault();
       var form = $(this);
       var url = form.attr('action');

       $.ajax({
           type: "POST",
           url: url,
           data: form.serialize(),
           context: form,
           success: function(resp) {
               console.log(resp);   
           }
       });
   });
</script>
"""

app = Flask('__name__')


@app.route('/')
def home():
    return render_template_string(home_template)

@app.route('/a', methods=['POST'])
def route_a():
    return "1"

@app.route('/statusdata/', methods=['POST'])
def statusdata():
    return "2"

if __name__ == '__main__':
    app.run()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...