Python 如何防止werkzeug记录日志

Python 如何防止werkzeug记录日志,python,logging,flask,werkzeug,Python,Logging,Flask,Werkzeug,我用的是烧瓶和werkzeug。为了监视sqlalchemy发出的sql语句,我设置了一个logging.basicConfig()记录器,并附加了before\u cursor\u execute事件来监视sql语句。但是现在werkzeug也将日志附加到该记录器,这不是我想要的。 所以我的日志看起来像这样…(不需要werkzeug消息) 在werkzeug文档中,我找不到任何关于日志的内容。这是我正在使用的代码 logging.basicConfig(filename='sql.log',

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

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

尝试类似的方法(未经测试):

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

Sqlalchemy使用“Sqlalchemy.engine”记录器。 要配置它,您可以执行以下操作:

lg = logging.getLogger('sqlalchemy.engine')
lg.setLevel(logging.INFO)

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

lg.add_handler(lh)
之后,您可以使用

logging.getLogger('sqlalchemy.engine')
logging.info('your sql statement')

现在清楚了,werkzeug利用了全局日志记录,我应该远离那个有用的信息,我不知道如何利用sqlalchemy正在使用的日志记录。
lg = logging.getLogger('sqlalchemy.engine')
lg.setLevel(logging.INFO)

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

lg.add_handler(lh)
logging.getLogger('sqlalchemy.engine')
logging.info('your sql statement')