在自定义类中使用 Zend_Log

发布于 2024-10-22 20:35:36 字数 284 浏览 2 评论 0原文

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

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

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

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

我很感谢您的帮助, 直流

I am using Zend_Log, and other required classes, without the MVC framework. I want to add Zend's logging capabilities (and other modules in the future) to my custom classes and I am wondering what the best approach is for doing so.

Right now I have a wrapper for the Zend logger so, presumably, I can access it globally:

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

Should I be adding this code to each method in my classes that I want to log? Should I not create logs inside my classes? Is there a smarter way?

I appreciate the help,
DC

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倒带 2024-10-29 20:35:36

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

看看这个文档
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('...' );

艺术

Dependency injection container seems like a great solution if your app can be integrated. All static calls cause issues in testing environment.

have look around this doc
http://components.symfony-project.org/dependency-injection/trunk/book/04-Builder

Worst case i would create a static getter like My_Log::get()->error("message"); the only point is that now you will be able to easily fix the test environemnt to make get return a fake instance. All your My_Log needs is a setLogger($logger) which will replace the static instance with a mock or whatever. Any way static calls are bad :/ if possible try to decouple classes so they would depend on as few classes as possible. Even injecting logger manually into your class constructor is a better idea. If you have MVC action plugin or a base controller could provide lazy loading getLogger() so your code could do $this->getLogger()->error('...');

art

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文