0

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

这三个选项浮现在脑海中。还有吗?哪个是最好的方法?

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

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

4

1 回答 1

0

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

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

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

于 2016-10-27T03:39:31.943 回答