python - 如何防止 werkzeug 记录日志

标签 python logging flask werkzeug

我正在使用 flask 和 werkzeug。为了监控从 sqlalchemy 发出的 sql 语句,我设置了一个 logging.basicConfig() 记录器并附加了 before_cursor_execute 事件来监控 SQL 语句。但是现在 werkzeug 还将日志记录附加到该记录器,这不是我想要的。 所以我的日志看起来像这样...(不需要 werkzeug 消息)

INFO:root:SELECT anon_1.heartbeat_id AS anon_1_heartbeat_id
FROM (SELECT heartbeat.id AS heartbeat_id FROM heartbeat ORDER BY stamp desc LIMIT ?
OFFSET ?) AS anon_1 ORDER BY heartbeat_name
INFO:werkzeug:127.0.0.1 - - [13/Jun/2013 12:10:52] "GET / HTTP/1.1" 200 -

在 werkzeug 文档中我找不到任何关于日志记录的内容。这是我正在使用的代码。

logging.basicConfig(filename='sql.log', level=logging.INFO)
def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
    logging.info(statement)
event.listen(engine, "before_cursor_execute", before_cursor_execute)

最佳答案

尝试这样的事情(未经测试):

import logging
logger = logging.getLogger('sql')
logger.addHandler(logging.StreamHandler('sql.log'))
logger.setLevel(logging.INFO)

def before_cursor_execute(conn, cursor, statement, parameters, context, executemany):
    logger.info(statement)
event.listen(engine, "before_cursor_execute", before_cursor_execute)

你所做的只是创建一个不同的记录器,这样它们就不会混淆,这应该可以解决你遇到的问题:)

关于python - 如何防止 werkzeug 记录日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084678/

相关文章:

python - 在 Cassandra 中创建现有 key 空间的副本(使用新名称)

python:使列表的元素在一定范围内

python - 确定所需 Python 最低版本的工具?

python - 如何将 loguru 与标准记录器一起使用?

java - Log4j2 创建不需要的日志文件

python - Flask 应用程序部署后实际如何运行?

python - 扩展图像字段以允许 pdf ( django )

docker - 警告 : no logs are available with the 'none' log driver

python - psutil 总是返回 pid 存在

Flask-登录密码重置