在自定义类中使用Zend_Log

时间:2011-03-16 21:48:06

标签: php zend-framework zend-log

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

现在我有Zend记录器的包装器,所以我可以在全球范围内访问它:

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

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

我很感激帮助, DC

1 个答案:

答案 0 :(得分:0)

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

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

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

本领域