0

誰か助けてもらえますか、私は成功してlog4netを使用していますが、基本的にWebプロジェクトに静的クラス(ラッパー)があり、これをassemblyinfo.csに追加してlog4net.configという外部ファイルから構成をロードします

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

これで、静的クラスを独自のクラスプロジェクトに移動して、静的クラス(ラッパー)を他のプロジェクトと共有できるようにすることにしました。

log4net.configはまだwebprojectにありますが、もちろん現在はロードされていません。静的クラス(現在は独自のプロジェクト)で実行しているため、これを知ることができます。

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

IsInfoEnabledはfalseを返し、何もログに記録されておらず、.configファイルは読み取られていません...

Log4netラッパー(静的クラス)は独自のクラスプロジェクトにありますが、.configファイルはWebプロジェクトihaveにあります。.configはプロジェクトごとに変更できますが、通常はラッパーは変更されないため、このように必要です。 。

もちろん、抽象クラスを作成し、Webプロジェクトで継承し、必要に応じて何かをオーバーライドすると思いました...しかし、もちろん、静的クラスを継承したり、抽象を作成したりすることはできません。

他の誰かがこれに出くわしたと確信しています、何かアイデアはありますか?..本当に感謝している助け

4

1 に答える 1

0

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

XmlConfiguratorアセンブリ属性は、log4netが最初に初期化されるときに読み取られます。Log4netは、呼び出し元のアセンブリをスキャンして属性を見つけます。

于 2009-08-28T21:28:52.647 に答える