From what I read in the SQLAlchemy logging configuration documentation, I realized that the echo argument in sqlalchemy.create_engine determines whether sqlalchemy.create_engine is forcibly written to stdout, but should not affect the availability of log messages for log processing.
In the code below, I do not get output in stdout OR db.log if echo=False , and I get output as for stdout AND db.log if echo=True . I don't want anything for stdout while db.log is still populating. How can i do this?
This is python 2.7.6 and 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()
** EDIT SOLUTION ** db_logger also requires the installation of logLevel. Not just 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()
source share