3

複数のサービス プロバイダーからデータ (通常は exe ファイルとテキスト ファイル) を取得するシステムがあり、システムはこのデータを取得し、そのデータに対して何らかの作業を実行します (基本的にはその動作を分析します)。

を使用Log4Netしてログ ファイルを生成していますが、サービス プロバイダーごとに個別のログ ファイルを作成したいと考えています。

これまで (サービス プロバイダーは 1 つしかないため) Postsharp、システムのログ記録とトレースを行っていました。基本的に、このコードを含む属性を作成しました。

Public class LogAttribute : OnMethodBoundaryAspect 
{
     private static ILog = LogManager.GetLogger();

     public override void OnEntry(MethodExecutionEventArgs eventArgs)
     {
           //Log some stuff...
     }

     //some other code
}

そして、これまたはこの種の属性を追加し (私が持っているさまざまなロギング ポリシーにさまざまな属性を持っています)、この属性をログに記録したいさまざまなメソッド/アセンブリにアタッチしました。

質問

Postsharpログに記録されているメソッドを使用するサービスに基づいて、関連するログ ファイルをデコードするために使用できますか? (いくつかのメソッドとクラスは、複数のサービス プロバイダーによって使用されています)。

Autofac を使用して依存関係を注入しているのが助けになる場合は、実行時にログを解決できますか?

4

1 に答える 1

1

現在のクラスまたは名前空間に応じて、別のログ ファイルを確実に選択できます。Autofac や log4net についてはお手伝いできませんが、PostSharp に関しては、次のことをお勧めします。

  1. ログ フィールドを [NonSerialized] インスタンス フィールドにします (静的フィールドではなく)。
  2. RuntimeInitialize メソッドをオーバーライドし、必要に応じてログ フィールドを初期化します (ターゲット メソッドの MethodInfo をパラメーターとして受け取ります)。
于 2012-06-20T12:59:29.670 に答える