質問

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

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

誰かが質問の答えを見つけるのを手伝ってもらえますか:

  1. log4net.configを保存する場所と、それをジョブに渡す方法
  2. Execute()メソッドが呼び出されるたびにlog4netを初期化する必要がありますか?

ありがとう!

役に立ちましたか?

解決

log4netを使用してからしばらく前ですが、記憶が正しければ、設定ファイルを任意の場所に保存し、ロガーの初期化中にそこからlog4netにロードさせることができます。

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top