1

ASP.NET MVC アプリケーション用の集中ログ ソリューション ( Windowsサーバー用)を探しています。

私のアプリケーションはスケーラブルで、ログもスケーラブルにしたい (ログ サーバーが単一障害点やボトルネックにならないようにするため)。

以前は LogFaces を使用していましたが、このソリューションはスケーラブルではありません。単一のログ サーバーを使用します。

log4net をロガーとして使用し、ログをプッシュするアペンダーを作成 (または使用) できるソリューションを探しています。

助言がありますか?

ありがとう!露詠

4

3 に答える 3

1

スプレッドは法案に合うでしょう。これはロギング サービスではありませんが、多くのプロジェクトで分散ロギングに使用されています (Apache Web サーバーのmod_log_spreadモジュールなど)。ここで利用可能なC# 用のクライアントがあります。

その価値は単純な原則の中にあります。つまり、ログを生成するアプリケーションは、ログを記録する行為自体によって制約されたり中断されたりしてはなりません。ロギングは通常、アプリケーションの二次的な問題であり、ログ ファイルの宛先ディスクがいっぱいになる (またはログ サービスがクラッシュする) ことは、アプリケーションが失敗する非常に悪い理由です。

このレベルの分離に到達するには、ロギング「サービス」とは独立して完全に非同期でロギングできるようにアプリケーションを構築する必要があります。Spread は、よく理解され確立された技術である UDP/マルチキャストを使用してこれを実現します。

Spread でログを記録するということは、アプリケーションが UDP を介して「ファイア アンド フォーゲット」モードでログを記録することを意味します。これらのマルチキャスト メッセージを消費するように Spread デーモンが設定されていない場合、ログ メッセージは永久に消えます。ただし、ログ プロデューサーとコンシューマーが切り離されているということは、アプリケーションが、ログがディスクをいっぱいにすることを心配する必要がなく、TCP を使用して中央ログ サーバーを見つけて接続することに時間を費やすことを心配する必要がないことを意味します。

ただし、スプレッドはすべてのアプリケーションに適しているわけではありません。あなたの環境はマルチキャストをサポートしていないかもしれません (そのため EC2 は手始めに)、またはネットワーク管理者が実稼働環境内でマルチキャスト パケットを防止している可能性があります。

于 2011-12-20T20:51:49.033 に答える
1

ELMAHを調べてください。アプリごとに実行することも、1 つのインスタンスでサーバー上のすべてのアプリをカバーすることもできます。

于 2011-12-20T15:46:11.047 に答える
0

wcf の net.tcp バインディングを介して、リモート マシン上の msmq メッセージ キューにメッセージを送信するアペンダーがあります。反対側には、これらのメッセージをデータベースに記録するサービスがあります。

asp.netについてのみ話している場合、elmahはおそらくかなり良いでしょう-私の理解では、それはそれにプラグインするだけで、Windowsサービスなどのより一般的なものには対処していません。wcf アプリケーションについてわからない、または asp.net アプリケーション以外のことを気にするかどうかさえわかりません。システムにはおそらくもっと多くのものがあり、標準化したいと思います。また、スケールを懸念しているため、ロギングのために asp.net から直接データベースにアクセスしなければならないことを懸念しているかもしれません。私の理解では、これがエルマーのすることです。調べたことはありませんが、msmq で私が提案したことを実行するように拡張できる可能性があります。規模を本当に気にしているなら、何らかの方法でメッセージング キューイングを組み込みたいと思うと思います。wcf はそのための良いオプションです。

于 2011-12-20T20:25:05.303 に答える