1

機能とタイマー ジョブ (FeatureActivated の機能によって作成される) で構成されるカスタム SharePoint ソリューションを開発しています。私のソリューションでは、ログに log4net を使用したいと考えています (ULS について知っています)。

機能自体のlog4netではすべて問題ありません(log4net.configをweb.configの近くに配置するだけですべて問題ありません)が、タイマージョブからlog4netを初期化する方法がまったくわかりません(IISではなく、 OSWTIMER)。

誰かが質問の答えを見つけるのを手伝ってくれませんか:

  1. log4net.config をどこに保存し、どのようにジョブに渡しますか?
  2. Execute() メソッドが呼び出されるたびに log4net を初期化する必要がありますか?

ありがとう!

4

1 に答える 1

2

log4net を使用してからしばらく経ちましたが、記憶が正しければ、必要な場所に構成ファイルを保存し、ロガーの初期化中にそこから log4net にロードさせることができます。

1) 構成ファイルを保存するのに適した場所は、12 個のハイブ内のフォルダーです。おそらく、機能のフォルダーです。このファイルへのパスは変更されないため、ロガーで簡単に参照できます。

2) SPJobDefinition(タイマージョブクラス)が実行されていないときにデータベース内に保存されるため、毎回ロガーを初期化する必要があると思います。タイマー ジョブをデータベースに格納する機能は、SPJobDefinition の基本クラスSPPersistedObjectに由来します。SPPersistedObject から継承されたクラスのメンバー変数は、クラスと共にデータベースに格納する必要があり、[Persisted]属性でマークする必要があります。しかし、私が知る限り、永続化されたオブジェクトは基本データ型 (int、long、string など) のみです。

そのため、データベース内に log4net Logger オブジェクトを保存することは機能しないか、少なくともサポートされていません。したがって、ジョブがデータベースからロードされるたびに、Logger オブジェクトを再度初期化する必要があります。

于 2009-10-28T15:57:58.083 に答える