我正在设置SQLAlchemy日志记录,因此只记录特定类型的delete
语句:
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)
问题是,在我的日志文件中,我看到了:
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
即,未记录实际ID。为什么???