【问题标题】:Using Zend_Log in custom classes在自定义类中使用 Zend_Log
【发布时间】:2011-03-16 21:48:06
【问题描述】:

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

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

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

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

感谢您的帮助, 直流

【问题讨论】:

  • 日志记录的概念现在也困扰着我。但我也有对日志服务器的 SOAP 调用,以便在一个地方从许多不同的应用程序实例进行日志记录:(

标签: php zend-framework zend-log


【解决方案1】:

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

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

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

艺术

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2021-08-24
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多