0

内部APIでもある一連のWebサービスがあります。1 つの共通の web.config ファイルを完全に共有します。

log4netにサイト全体の1つのログを作成させる方法はありますか? そして、一般的なエラーハンドラーを持っていますか? 問題は、それらがすべて個別の仮想ディレクトリ、個別のアプリケーションであると思います...?

しかし、再び...彼らは同じweb.configファイルを共有し、それは正常に動作します.どうにかしてglobal.asaxなどを共有できますか? うまくいかない...

助けてくれてありがとう。

4

2 に答える 2

1

log4net のFAQから:

複数のプロセスを同じファイルに記録するにはどうすればよいですか?

デフォルトでは、FileAppender は、ログを記録している間、ログ ファイルに対して排他的な書き込みロックを保持します。これにより、他のプロセスがファイルに書き込むことができなくなります。FileAppender は、ログが書き込まれている間のみ書き込みロックを取得する別のロック モデル MinimalLock を使用するように構成できます。これにより、パフォーマンスは低下しますが、複数のプロセスが同じファイルへの書き込みをインターリーブできます。MinimalLock 構成の例については、FileAppender 構成例を参照してください。

MinimalLock モデルを使用して 1 つのファイルへの書き込みをインターリーブすることはできますが、特に複数のマシンからログを記録する場合は、最適なソリューションではない可能性があります。あるいは、RemotingAppenders に 1 つ以上のプロセスのログを記録することもできます。RemoteLoggingServerPlugin (または IRemoteLoggingSink) を使用すると、プロセスはすべてのイベントを受信し、それらを 1 つのログ ファイルに記録できます。

追加の構成がなければ、log4net はファイルに排他ロックを設定します。MinimalLock 設定を使用すると、「うまくいけば」共有ログを取得できます。つまり、走行距離は異なる場合があります。

推奨される代替戦略として、Web サービスの内部 API があるため、バックグラウンドで単一のプライベート静的ロガーを実装し、ログにエントリを追加する Web サービス メソッドを検討してください。ロギングを実装する他の Web メソッドからロギング Web メソッドを (パフォーマンスが重要な場合は非同期で) 呼び出すことができます。

于 2009-08-12T21:21:12.587 に答える
0

それらはすべて同じプロジェクト内にありますか?それらは ASMX サービスですか? もしそうで、それらを同じ仮想ディレクトリに置くことができれば、問題はないはずです。

于 2008-11-21T00:05:11.837 に答える