Sharepointタイマージョブとlog4net
-
07-07-2019 - |
質問
機能とタイマージョブ(FeatureActivatedの機能によって作成されます)で構成されるカスタムSharePointソリューションを開発しています。 私のソリューションでは、ロギングにlog4netを使用します(ULSについて知っています)。
機能自体のlog4netですべてがうまくいきます(web.configの近くにlog4net.configを配置し、すべてがうまくいきます)が、タイマージョブからlog4netを初期化する方法はまったくわかりませんIIS、ただしOSWTIMERによる)。
誰かが質問の答えを見つけるのを手伝ってもらえますか:
- log4net.configを保存する場所と、それをジョブに渡す方法
- Execute()メソッドが呼び出されるたびにlog4netを初期化する必要がありますか?
ありがとう!
解決
log4netを使用してからしばらく前ですが、記憶が正しければ、設定ファイルを任意の場所に保存し、ロガーの初期化中にそこからlog4netにロードさせることができます。
1)構成ファイルを保存するのに適した場所は、12個のハイブ内のフォルダーです。おそらくあなたの機能のフォルダ。このファイルへのパスは変更されないため、ロガーで簡単に参照できるはずです。
2) SPJobDefinition (タイマージョブクラス)は、実行されていないときにデータベース内に格納されます。データベースにタイマージョブを保存する機能は、SPJobDefinitionの基本クラス SPPersistedObject 。データベースにクラスと一緒に保存する必要があるSPPersistedObjectから継承したクラスのメンバー変数は、 [Persisted]
属性でマークする必要があります。しかし、私が知る限り、永続オブジェクトは基本データ型(int、long、stringなど)にしかなれません。
したがって、log4net Loggerオブジェクトをデータベースに保存することは機能しないか、少なくともサポートされていません。そのため、データベースからジョブがロードされるたびに、Loggerオブジェクトを再度初期化する必要があります。