从我在SQLAlchemy日志记录配置文档中阅读的内容中,我了解到sqlalchemy.create_engine
上的echo参数控制是否将sqlalchemy日志记录强制输出为stdout,但不应影响日志消息是否可用于日志处理程序。
在下面的代码中,如果使用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/