2011-08-12 14 views
2

私はできる限りDRYとしてログステートメントを保持できるように、私は多数のカスタムオブジェクトレンダラーを持っています。最初に私のアプリケーションを配備すると、log4netはカスタムレンダラを認識しませんが、それ以外のものは正しく処理します。 configファイルに触れると(変更されたように見える)、ファイルウォッチャーは変更をピックアップし、レンダラーが動作を開始します。しかし、時間がたつにつれて、彼らは再び作業をやめ、log4net設定ファイルに再度触れなければなりません。Log4netはカスタムレンダラーの使用を中止します

セットアップは.Net 3.5(sp1)wcfアプリケーションです。この問題は、2008年版Webサーバーと2008年版Windows 7の両方で発生します。log4net.configという設定ファイルがあり、AssemblyInfoメソッドを使用しています。

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

私がロガーにアクセスする方法は、そのようなクラスの静的メンバーを使用することです。

private static readonly ILog log = LogManager.GetLogger(typeof(Service)); 

レンダラーはこれと同様に構成されています。

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest" /> 

これらのレンダラはすべて、ログが行われているメインとは別のアセンブリにあります。何かを逃したり、何か間違っているのですか?なぜレンダラーがすぐに認識されないのか分からず、後でもう一度忘れてしまいます。

答えて

1

回答が見つかりました。私はレンダリングされたクラスのアセンブリ情報の多くを含める必要がありました。

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest" /> 

<renderer renderingClass="MyCompany.Log4net.SearchRequestRenderer, MyCompany.Log4net" renderedClass="System.DirectoryServices.Protocols.SearchRequest, System.DirectoryServices.Protocols, Version=2.0.0.0 , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
なった
関連する問題