【问题标题】:symfony - log custom propel querysymfony - 记录自定义推进查询
【发布时间】:2010-03-08 10:38:16
【问题描述】:

我们使用 symfony 1.0。我们有一个使用 Propel 对象的模块。 sql-querys 在“DB”菜单下的 symfony-debugbar 中可见。

我的问题是我们还通过 propel::getRS("select ...") 使用自定义 sql 查询 此查询在调试栏中不可见。

有人知道怎么做吗?

【问题讨论】:

    标签: symfony1 propel


    【解决方案1】:

    推荐方式

    推荐使用 symfony 中的标准记录器:

    从动作内部:

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

    从模型内部(或其他任何地方):

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

    这些方法会将您的 SQL 查询插入到调试工具栏中的“日志和消息”选项卡中执行链中的正确位置。

    然而,如果您只想在“日志和消息”标签的顶部查看查询而不需要将它们存储在永久日志中,您可以使用 $this->debugMessage($sql); 代替,这也意味着您可以一起查看查询,而不是通过日志执行链搜索它们。

    一种可能更可取的方式

    我怀疑您可能希望这些 SQL 查询出现在“数据库”选项卡上。这不是 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 查询推送到调试工具栏中的“数据库”选项卡中。如果您愿意,我将时间 [x.xx ms] 选项留给您实施 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多