0

我正在使用 Zend_Log 和其他必需的类,而没有 MVC 框架。我想将 Zend 的日志记录功能(以及将来的其他模块)添加到我的自定义类中,我想知道这样做的最佳方法是什么。

现在我有一个 Zend 记录器的包装器,所以大概可以全局访问它:

My_log::log('Testing', Zend_Log::INFO);

我是否应该将此代码添加到我要记录的类中的每个方法中?我不应该在我的课程中创建日志吗?有没有更聪明的方法?

感谢您的帮助,DC

4

1 回答 1

0

如果您的应用程序可以集成,依赖注入容器似乎是一个很好的解决方案。所有静态调用都会导致测试环境出现问题。

看看这个文档 http://components.symfony-project.org/dependency-injection/trunk/book/04-Builder

最坏的情况是我会创建一个静态 getter My_Log::get()->error("message");,唯一的一点是,现在您将能够轻松地修复测试环境以使 get 返回一个假实例。你所有的 My_Log 需要的是一个setLogger($logger)用模拟或其他东西替换静态实例。任何方式静态调用都是不好的:/如果可能的话尝试解耦类,这样它们就可以依赖尽可能少的类。即使手动将记录器注入到您的类构造函数中也是一个更好的主意。如果你有 MVC 动作插件或基本控制器可以提供延迟加载getLogger(),那么你的代码就可以做到$this->getLogger()->error('...');

艺术

于 2011-05-27T13:56:06.120 回答