gpt4 book ai didi

python - Flask 阻止特定端点的日志记录

转载 作者:行者123 更新时间:2023-12-04 15:27:18 26 4
gpt4 key购买 nike

我在我的 flask 应用程序中有一些带有 Bokeh 的 ajax 调用,为了获取它的数据, Bokeh 图每秒向某个端点执行一个 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 -

如何从 Flask 的调试日志中排除路由/statusdata/?
谢谢你的帮助!

最佳答案

您可以向记录器添加自定义过滤器以查找路由名称。如果您只是使用开发服务器,这将是 werkzeug处理程序。当您进入生产环境时,您必须找到特定的处理程序。一个完整的示例(您可以在浏览器控制台中监控以确认尽管服务器上没有显示记录,但表单已提交):

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()

关于python - Flask 阻止特定端点的日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62000942/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com