我在Windows 7中运行一个使用sqlalchemy的python应用程序。
在控制台(DOS提示符)中,我可以看到sqlalchemy模块的很多输出,例如
2013-09-16 13:59:20,158 INFO sqlalchemy.engine.base.Engine UPDATE DATA SET qty=?, price=?
我想继续在日志文件中记录这些消息,但希望禁止它们打印到 stdout。
尝试将FileHandler
添加到sqlalchemy
记录器并将其propagate
属性设置为 False
,例如:
import logging
sqla_logger = logging.getLogger('sqlalchemy')
sqla_logger.propagate = False
sqla_logger.addHandler(logging.FileHandler('/path/to/sqla.log'))
或者,您可以使用日志记录配置 API(例如 logging.config.dictConfig()
) 执行与上述相同的操作。
如果希望RootLogger
打印日志,请从 SQLAlchemy 中删除处理程序:
sqla_logger = logging.getLogger('sqlalchemy.engine.base.Engine')
for hdlr in sqla_logger.handlers:
sqla_logger.removeHandler(hdlr)
使用 SQLAlchemy 0.9 进行测试