2

我目前正在使用 symfony 1.4 和 Doctrine 1.2 进行项目。我正在寻找一种从模型层进行日志记录的正确方法。

在某些模型类中,我使用记录挂钩 postSave() 来使用 exec() 创建 ZIP 文件(因为 PHP zip 不提供存储方法“Stored”)。为确保一切正常,我检查返回码并在出现问题时记录错误。我的第一个天真的方法是这样做的:

if ($returnCode != 0) {
  sfContext::getInstance()->getLogger()->debug(...);
}

如您所知,这不太好用,因为 sfContext 属于控制器层,不应该从模型层使用。我的下一个尝试是使用模型的构造函数传入一个 sfLogger 实例,但这不起作用,因为 Doctrine 1.2 保留构造函数供内部使用(Doctrine 1.2 Documentation)。

我期待着您的建议!

4

1 回答 1

1

您可以在函数中添加一个 setLogger() 方法,该方法在参数中获取记录器实例,并将其设置为内部变量,例如 $this->logger。稍后,当您需要记录某些内容时,请像if ($this->logger) { $this->logger->debug(...); }.

于 2010-04-04T18:42:18.210 回答