2010-03-08 66 views
0

我们使用symfony 1.0。我们有一个模块与Propel对象一起工作。 sql-querys在“DB”菜单下的symfony-debugbar中可见。symfony - 日志自定义推进查询

我的问题是,我们还通过propel :: getRS(“select ...”)使用自定义的sql-querys 这个查询在调试栏中不可见。

有没有人有一个想法如何做到这一点?

回答

1

推荐方式

标准的记录器在symfony的将是推荐的方法:

从动作中:

$this->logMessage('executed SQL: '.$sql); 

从模型中(或其他地方):

sfContext::getInstance()->getLogger()->info('executed SQL: '.$sql); 

T hese方法会将您的SQL查询插入调试工具栏中'执行链中正确位置'的'logs & msgs'选项卡中。

然而,如果你只是想看看查询在的顶部“日志&封邮件”选项卡,不需要它们存储在永久性日志,你可以使用$this->debugMessage($sql);代替,这也意味着您可以一起查看查询,而不是通过日志执行链搜索它们。

我怀疑你可能希望这些SQL查询出现在“DB”选项卡上,而不是一个潜在的最好方式

。这不是直接由symfony的支持,但你可以“砍”这个解决方案,而不是:

从动作中:

$this->logMessage(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql)); 

从模型内:

sfContext::getInstance()->getLogger()->info(sprintf("{sfCreole} executeQuery(): [x.xx ms] %s", $sql)); 

这模仿symfony中用于记录SQL查询的调试选项的行为,因此会将您的自定义SQL查询推送到调试工具栏中的'DB'选项卡中。如果你愿意的话,我可以给你定时[x.xx ms]选项来实现:)