0

私は最近PSR-3、Web アプリケーションまたは Web サイト全体でロガーの実装にアプローチする最良の方法について読んで興味を持っています。ロガーがどのように定義され、PSR-3 ごとにどのように実装できるかは理解していますが、キャッチされた例外、重要なイベントなどのさまざまなログのニーズのために、アプリケーション全体でそれらにアクセス/参照することはどうですか?

この3つの選択肢が頭に浮かびました。もうありますか?最適なアプローチはどれですか?

  1. グローバル オブジェクト -$logger->debug('foo')
  2. グローバル静的インスタンス -Logger::debug('foo')
  3. 何らかの方法で -$app->getLogger()->debug('foo')
  4. ...等...

私の考慮事項の 1 つは、ロガーを参照するために必要なコードを最小限に抑えることです。たとえば、上記のオプション 3 では、アプリケーション全体で適切にキャッチされた例外、注目すべきイベントなどごとにロガーを取得するのはかなり面倒に思えます。

4

1 に答える 1

0

ロガーまたは 3 番目のオプションの依存性注入によってロガーを取得することを好みます。

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

デフォルトのロガーを、単体テスト用のダミーまたは本番環境用のハイパフォーマンスに一度置き換えるのは簡単です。

于 2016-10-27T03:39:31.943 に答える