sqlalchemy logging doesn't show parameter values

天涯浪子 提交于 2020-01-07 04:54:26

问题


I'm setting up SQLAlchemy logging like so, so that only a specific type of delete statements are logged:

class DeleteFilter(logging.Filter):
    def filter(self, record):
        return 'DELETE FROM cr_pending_config WHERE cr_pending_config.id' in record.getMessage()

logger = logging.getLogger('sqlalchemy.engine')
logger.setLevel(logging.INFO)
logger.addFilter(DeleteFilter())

# create a file handler
handler = logging.FileHandler('sql_log.log')
handler.setLevel(logging.INFO)
handler.addFilter(DeleteFilter())

# create a logging format
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)

# add the handlers to the logger
logger.addHandler(handler)

Problem is, in my log file, I see this:

2017-11-07 20:34:44,196 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s
2017-11-07 20:40:37,169 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s
2017-11-07 20:41:21,704 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s
2017-11-07 20:41:21,858 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s
2017-11-07 20:41:21,987 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s
2017-11-07 20:41:44,658 - sqlalchemy.engine.base.Engine - INFO - DELETE FROM cr_pending_config WHERE cr_pending_config.id = %s

That is, the actual IDs are not being logged. Why ???

来源:https://stackoverflow.com/questions/47170229/sqlalchemy-logging-doesnt-show-parameter-values

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!