【问题标题】:Best way to access a logger across an application/website in PHP在 PHP 中跨应用程序/网站访问记录器的最佳方式
【发布时间】:2016-10-27 03:25:17
【问题描述】:

我最近阅读了PSR-3,并有兴趣了解在 Web 应用程序或网站上实现记录器的最佳方法。我了解如何定义记录器以及如何根据 PSR-3 实现它们,但是如何在应用程序中访问/引用它们以满足各种记录需求,例如捕获的异常、显着事件等?

我想到了这三个选项。还有吗?哪种方法最好?

  1. 全局对象 - $logger->debug('foo')
  2. 全局静态实例 - Logger::debug('foo')
  3. 通过某种方法 - $app->getLogger()->debug('foo')
  4. ...等等...

我的考虑之一是将引用记录器所需的代码保持在最低限度。例如,上面的选项 3 似乎在整个应用程序中为每个适当的捕获异常、显着事件等检索记录器会变得相当乏味。

【问题讨论】:

    标签: php logging psr-3


    【解决方案1】:

    我更喜欢通过 logger 或您的第三个选项的依赖注入来获取 logger。

    DI::getInstance()->get('logger')
    

    很容易将默认记录器替换为用于单元测试的虚拟记录器或用于生产环境的高性能一次。

    【讨论】:

    • 感谢您的回答。我同意依赖注入的好处和更换不同记录器的便利性,但另一方面,对于每个适用的捕获的异常/事件,以这种方式访问​​记录器不会有点冗长吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多