从Symfony2中的实体和存储库记录的正确方法

cap*_*ica 6 php logging symfony symfony-2.3

什么是在symfony2体系结构中记录来自Entity或Repository类的消息或错误的方法?在symfony1中,您可以使用单例来杀死小狗,通过这样做来从任何地方获取记录器:

sfContext::getInstance()->getLogger()
Run Code Online (Sandbox Code Playgroud)

Symfony2的容器模型更加严格,这很好,但是如何从非容器感知类中进行日志记录呢?对于repos,我想你可以将它们(全部)定义为服务,依赖于记录器,然后从那里开始.但是当你有一个Entity类的实例时呢?

从历史上看,我想把日志消息放在类方法中,但现在呢?我应该将记录器(作为参数)传递给想要编写日志消息的每个类方法吗?这看起来有点矫枉过正,但也许这是最好的做法?

或者我看到这个错误,Entities或Repos不应该写日志消息,而是将它们传回控制器来处理?

Jov*_*vic 2

您可能应该避免将业务逻辑(甚至日志记录)放入实体模型中。

至于存储库,您描述的方式是正确的。

  • 实体不正是所有业务逻辑应该去的地方吗?我现在很困惑!你有一个 MVC 架构......所以 V 代表视图(树枝,那里没有业务逻辑),C 代表控制器 - 让它们保持精简,逻辑只是关于路由并将繁重的工作移交给模型的 M。哪个是实体类,对吧? (3认同)