一部の人々はlog4netの代わりにELMAH を使用しています。何がそれを良くするのですか?
スタックオーバーフローの質問への回答で ELMAHについて知りました。C#でログインするにはどうすればよいですか?
一部の人々はlog4netの代わりにELMAH を使用しています。何がそれを良くするのですか?
スタックオーバーフローの質問への回答で ELMAHについて知りました。C#でログインするにはどうすればよいですか?
回答:
ELMAHは、Webアプリケーションのエラーと例外を追跡する目的で機能し、さまざまなメカニズム(SQL、RSS、Twitter、ファイル、電子メールなど)を介してこれらの例外を簡単に記録または表示できます。組み込みの例外処理がない場合、ELMAHは、おそらくWebアプリケーション環境での例外処理の観点から、あなたが探しているものを手に入れます。
Log4netは例外ロギングにも使用できますが、Webアプリケーションにプラグインするために独自のハンドラーをロールする必要がある場合があります。log4netは汎用のロギングフレームワークであるため、他のタイプの情報ロギングを行う必要がある場合、Log4netはELMAHよりも優れています。Log4netは、ほぼすべての.NETアプリケーションでも使用できます。
Log4Netは、アプリケーション(ウェブ、コンソール、dllなど)内で使用することを目的としたAPIを備えた汎用ログフレームワークです。
logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");
ELMAHは、特にWebアプリケーションの例外をログに記録するための控えめなIISプラグインです。アプリケーション内にELMAHへの参照は表示されず、対話するAPIがありません。モジュールとハンドラーのIIS拡張ポイントを使用して動作を強化します。さらに、Webアプリケーションで発生したエラーを表示するためのWebフロントエンドがあります。Log4Netにはフロントエンドがありません。ログファイル、syslogサーバー、データベースなどにログメッセージを送信できるさまざまなログシンク(アペンダー)だけがあります。
主な違いは、ELMAHが未処理のアプリケーション例外をログに記録することです。log4netは、ログに記録するように指示したものをすべて記録します。未処理の例外をログに記録するようにlog4netを構成できますが、ELMAHはすぐに使える豊富な有用な情報を取得します。
ELMAHは、エラーイベントにフックしてログを記録するHTTPモジュールを作成することで機能します。これは、設計が悪いと簡単に妨害され、壊れる可能性があります。Log4Netは追加の作業を事前に必要とする場合がありますが、AOPフレームワークを使用してそれをクラス全体またはアセンブリ全体に適用すると、非常に少ないコードと労力ではるかに優れた例外ロギングを実現できます。
ELMAHは、WCFサービスで実現するのが難しいHttpContextにアクセスできる場合にのみ機能します。したがって、とにかくWCFで他のロガーを使用することになります。より一般的なソリューションを1つだけ使用しないのはなぜですか。
ELMAHはWebアプリケーションに特別に使用され、log4netはWebアプリケーションとWindowsアプリケーションの両方で使用されます。ELMAHには、Webアプリケーションでlog4netよりも多くの利点があります。