次の要件があります。
簡単にするために、私のソリューションが 2 つのプロジェクトで構成されているとしましょう。
- Log4Net 機能をラップするクラス ライブラリ プロジェクト。
- log4net の実際のメソッドを呼び出す必要があるクラス ライブラリ ロガー メソッドへのアプリの呼び出しとしての MVC Web アプリケーション プロジェクト。
このプロジェクトでは、クラス ライブラリの app.config ファイルまたは xml ファイルで log4net config を指定したいと考えていました。
このスレッドで simlar issue を読みました。スタンドアロン クラス ライブラリ アセンブリに対して log4net を構成して有効にするにはどうすればよいですか?
しかし、私のclasslibrayプロジェクトのAssembly.infoファイルに次の2行を入れるという解決策はうまくいきませんでした。
[assembly: log4net.Config.Repository("ClassLibrary1")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "ClassLibrary1.config", Watch = true)]
Log4Net は関連する構成を見つけることができないためです。
レコードの場合、クラス ライブラリ アセンブリの名前 = ClassLibrary1
このライブラリは、mvc Web アプリ プロジェクトから参照しています。
スレッドのようにsolution2を使用する理由はありますか?スタンドアロンのクラスライブラリアセンブリに対してlog4netを構成して有効にするにはどうすればよいですか?
私のために働いていませんか?
編集:
私のプログラムの流れはこんな感じです。
MVC アプリが起動します。
Unity は、コンストラクター インジェクションを介して log4netwrapper のシングルトン インスタンスを正常にインジェクトします。
次に、アクション メソッドで、ラッパーを介してロガーを呼び出します。ラッパー コンストラクターで、XmlConfigurator を作成します。
呼び出し中は、構成エントリを読み取るためのパスとして fileinfo オブジェクトを提供していないことに注意してください。その目的のために、私のラッパーアセンブリでのみ
[assembly: log4net.Config.Repository("ClassLibrary1")]
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "ClassLibrary1.config",
Watch = true)].
ここに解決策はありますか?