gpt4 book ai didi

python - 如何仅将 SQLAlchemy 记录器输出到文件

转载 作者:太空狗 更新时间:2023-10-29 21:58:27 25 4
gpt4 key购买 nike

根据我在 SQLAlchemy 日志记录配置文档中阅读的内容,我了解到 sqlalchemy.create_engine 上的 echo 参数控制是否将 sqlalchemy 日志记录强制输出到标准输出,但不应影响日志消息是否可用记录处理程序。

在下面的代码中,如果 echo=False,我不会向 stdout 或 db.log 输出,如果 echo=True,我会同时向 stdout 和 db.log 输出>。当 db.log 仍然存在时,我不想输出任何东西。我怎样才能做到这一点?

这是 python 2.7.6 和 sqlalchemy 0.9.9

import sqlalchemy
import logging

active_db_url = 'postgres://user:pass@localhost/log_test'

db_log_file_name = 'db.log'
db_log_level = logging.INFO

db_handler = logging.FileHandler(db_log_file_name)
db_handler.setLevel(db_log_level)

db_logger = logging.getLogger('sqlalchemy')
db_logger.addHandler(db_handler)

engine = sqlalchemy.create_engine(active_db_url, echo=True)
engine.connect()

** 编辑已解决**db_logger 也需要设置其 logLevel。不仅仅是 db_handler。

import sqlalchemy
import logging

active_db_url = 'postgres://user:pass@localhost/log_test'

db_log_file_name = 'db.log'
db_handler_log_level = logging.INFO
db_logger_log_level = logging.DEBUG

db_handler = logging.FileHandler(db_log_file_name)
db_handler.setLevel(db_handler_log_level)

db_logger = logging.getLogger('sqlalchemy')
db_logger.addHandler(db_handler)
db_logger.setLevel(db_logger_log_level)

engine = sqlalchemy.create_engine(active_db_url, echo=False)
engine.connect()

最佳答案

首先创建一个文件句柄来写入日志。

handler = logging.FileHandler('app.log')
handler.setLevel(logging.DEBUG)

获取 sqlalchemy 记录器并添加此句柄。

logging.getLogger('sqlalchemy').addHandler(handler)

关于python - 如何仅将 SQLAlchemy 记录器输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29114627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com