2009-08-28 11 views
0

誰でも助けてくれますか?私はlog4netを成功させて使用しています。私は基本的にはwebprojectの静的クラス(ラッパー) assemblyinfo.csLog4Net.configがロードされていないため、ラッパークラスを独自のクラスプロジェクトに移動しました

// log4net config file 
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)] 

でこれを追加することで、外部ファイルと呼ばれるlog4net.configから設定のすべての良い!今私は私が私の静的クラス(ラッパー)を共有することができ、独自のクラスのプロジェクトに私の静的クラスを移動することを決めました他のプロジェクト。

log4net.configがwebprojectにまだあるが、もちろんその今ロードされ得ていない、私は私の静的なクラス(現在は自身のプロジェクト)で、私は

  return LogManager.GetLogger("InfoLogger").IsInfoEnabled; 

をやっているので、これを言うとリターンをIsInfoEnabledすることができますfalse、何も記録されていない場合、.configファイルは読み込まれません。

Log4netラッパー(静的クラス)は独自のクラスプロジェクトにありますが、.configファイルはWebプロジェクト内にあります。 .configはプロジェクト単位で変更することができますが、一般的にはラッパーは変更できないため、このようにする必要があります。もちろん

..私は...私は抽象クラスを作成して、ちょうど私のwebprojectに継承し、私がする必要がある場合は何よりも優先されます思っもちろんあなたは、静的なクラスを継承したり、抽象的なことはできません私は他の誰かがこれを見ていると確信しています、任意のアイデア?どのようなヘルプ本当に感謝

+0

ラッパークラスを取り除き、各プロジェクトに1行の構成を入れてLog4Netを直接使用してみませんか?確かに、あなたは依存関係がありますが、ほとんどがILogインターフェイスです。 Dependency Injectionを使用してそれから離れることはできますが、静的なクラスラッパーはまだ邪魔になります。 – TrueWill

答えて

0

log4netをラップするクラスライブラリにXmlConfiguratorアセンブリ属性を配置する必要があります。 webアプリケーションのルートディレクトリにlog4net.configファイルを保存することができます。

XmlConfiguratorアセンブリ属性は、log4netが初めて初期化されたときに読み込まれます。 Log4netは呼び出し元アセンブリをスキャンして属性を検索します。

+0

まあまあありがとう..その作品 –

関連する問題