2012-03-08 5 views
3

私は、アプリケーション内で呼び出す静的メソッドを持つ単純なクラスのLogHelperを作成しました。次のように私はそれを呼び出すことができます。一つは、それに渡されていない場合クラス間のPHPロギング手法

LogHelper::writeToErrorLog($config->getLogPath(), $exception); or 
LogHelper::writeToErrorLog($config->getLogPath(), $exception, $config->getLogFile); 

writeToErroLog方法は、ログファイル名を生成します。

私は基本的にXMLファイルを取り、ゲッター&セッターを経由して値を公開configという別のクラスを、持っています。これは、アプリケーションの開始時に初期化されます。&には、エラーログを書き込む必要のあるログパスが含まれています。

私の要件は、アプリケーションの実行ごとに同じファイル名で1つのログファイルを作成することです。アプリが終了すると、ログにはログが記録されます。

私のアプリケーションには、DB、解析データ、書式設定データなどのための数多くのクラスがあります。私のエラーの大半は、LogHelperによって処理された&がキャッチされた親クラスにバブルされる例外から発生します。例外をスローしたくない場合や、情報やエラーを記録するだけの場合がいくつかあります。

私の懸念は、ロギングを必要とするすべてのクラスにconfigを渡しているような気がします。間違っていると感じます。さらに、エラーログのファイル名を一度設定したいだけです。これに近づくベストプラクティスの方法はありますか? TIA

スタッフ

+0

「アプリケーションの実行ごとに同じファイル名で1つのログファイルを作成します」 - これはどうやってですか?乱数などを使用していますか?あなたの質問に重要なコードを追加する必要があります。 – hakre

+0

私はこのことについて少し考えていたのですが、これを少し変更しました。私が最初にアプリケーションを初期化するとき、ログファイル名を設定して、configオブジェクトがどこにでも渡されるので、それをconfigオブジェクトに保存します。 LogHelperを呼び出すと、設定オブジェクトからログファイルが取り出されます。 – StuffandBlah

+0

私の質問はOOPにもっと焦点を当てていたはずです。オブジェクトが別のオブジェクトに依存しており、常に利用可能である必要がある場合に、最良のアプローチは何ですか?私は1つのオプションがセッションに設定オブジェクトを追加することができると思いますか? – StuffandBlah

答えて

1

あなたがset_exception_handler()を使用して検討していますか?すべてのクラスにロガーを置く必要はなく、捕捉されなかったすべての例外を処理するだけです。あなたのブートストラッププロセスまたはのようないくつかの他のアプリケーションの初期化スポット以内にそれを呼び出すことができます。

set_exception_handler(array("MyClassName", "functionNameHere")); 

その関数の中にあなたがLogHelper::writeToErrorLog()を呼び出すことができます。

関連する問題