1

複数のモジュールと各モジュール内のさまざまな設定を含むPHPアプリケーションがあります。log4phpを使用してログを有効にしたいのですが、個々のモジュールごとに異なる設定(ログレベル、ログファイルなど)があります。これらの設定の一部は、エンドユーザー(ログレベル)がその場で変更する必要があり、これらのプロパティをデータベースに保存したいと思います。

現在、ログレベルを動的に設定できます。ただし、他のプロパティを動的に設定する方法を決定することはできません。log4phpの構成に関するドキュメントは、ほとんどの場合、properties / xmlファイルを介して行われますが、すべての設定はプログラムで変更できると書かれています。

このようなことをしたことはありますか?もしそうなら、どうすればいいですか?http://incubator.apache.org/log4php/index.htmlのドキュメントを確認しましたが、さらにサポートが必要です。

明確にするために-エンドユーザーはこれらに直接アクセスできないため、構成ファイルは使用しません。特定のログ設定を変更するためのフロントエンドを提供し、すべての設定がデータベースに保存されます。

4

1 に答える 1

3

APIドキュメントを見ると、ロガーを構成するために構成アダプターと戦略パターンを使用していることがわかります。アダプタには、メインのロガーによって呼び出される単一のメソッドconfigureがあります。LoggerConfiguratorPhpがあり、通常のPHP配列を返すPHPファイルを読み取り/インクルードします。代わりにデータベースから返された配列を受け入れるようにこれを簡単に変更できると想像できました。出発点として、このクラスのソースコードをご覧ください。作成したいのは、LoggerConfiguratorDBです。これを次のようにメインのLoggerクラスに渡すことができます。

$configurator = dirname(__FILE__).'/../resources/configurator_db.php';
Logger::configure( $configurator, 'LoggerConfiguratorDb');

私はLog4Phpを使用したことはありません。これは、APIを見ただけで想定されています。新しいアダプターがどのように見えるか、私にはまったく手がかりがありません。しかし、おそらくこれはあなたを正しい方向に導きます。

あなたが何かを思いついたなら、なぜそれをプロジェクトに寄付してみませんか:)

于 2010-01-06T18:14:07.517 に答える