【发布时间】:2022-01-25 15:28:08
【问题描述】:
我正在使用 Python (3.8) 和 SQLAlchemy (1.4.29) 来处理 Web 应用程序项目的 SQL 数据库。根据 SQLAlchemy 的 Engine Configuration 文档,我可以使用 Python 的 logging 模块来控制日志输出的位置和方式。
我希望 SQLAlchemy 引擎输出到文件 (logs/actions.log),并阻止记录器输出到 sys.stdout,所以我采用了这种方法:
import logging
import sqlalchemy as sq
from sqlalchemy import orm
logger = logging.getLogger('sqlalchemy')
handler = logging.FileHandler("logs/actions.log")
logger.handlers = []
handler.setLevel(logging.DEBUG)
logger.addHandler(handler)
engine = sq.create_engine(DB_URI, echo=True)
session = (orm.sessionmaker(engine))()
但这将在文件和sys.stdout 中输出。我怎样才能防止这种情况?谢谢!
是的,我看到过类似的问题,但它们并没有帮助解决我的问题。
【问题讨论】:
-
除了记录器配置,在引擎上设置
echo=False来抑制标准输出。 -
@snakecharmerb 如果我设置
echo=False,那么什么都不会输出。不知道为什么会这样。 -
@C.Nivs 添加 FileHandler 会导致同样的问题。
标签: python logging sqlalchemy