首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止werkzeug日志记录

如何防止werkzeug日志记录
EN

Stack Overflow用户
提问于 2013-06-13 18:23:41
回答 2查看 3.9K关注 0票数 5

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

代码语言:javascript
复制
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文档中,我找不到任何关于日志记录的内容。这是我正在使用的代码。

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-13 18:28:52

尝试如下所示(未经测试):

代码语言:javascript
复制
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)

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

票数 6
EN

Stack Overflow用户

发布于 2013-06-13 18:55:46

Sqlalchemy使用"sqlalchemy.engine“记录器。要对其进行配置,可以执行以下操作:

代码语言:javascript
复制
lg = logging.getLogger('sqlalchemy.engine')
lg.setLevel(logging.INFO)

lh = logging.StreamHandler()
lh.setFormatter(logging.Formatter('YOUR FORMAT HERE'))

lg.add_handler(lh)

在此之后,您可以使用

代码语言:javascript
复制
logging.getLogger('sqlalchemy.engine')
logging.info('your sql statement')
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17084678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档