web-dev-qa-db-ja.com

log4netとELMAHの違いは何ですか?

Log4netの代わりに [〜#〜] elmah [〜#〜] を使用している人もいます。何がそれを良くしますか?

ELMAHについては、 Stack Overflowの質問への回答でC#にログインするにはどうすればよいですか?

107
IAdapter

ELMAHは、Webアプリケーションのエラーと例外を追跡する目的を果たし、さまざまなメカニズム(SQL、RSS、Twitter、ファイル、電子メールなど)を介してそれらの例外を簡単に記録または表示できます。組み込みの例外処理がない場合、ELMAHは、Webアプリケーション環境での例外処理の観点から探しているものを取得する可能性が高くなります。

Log4netは例外ログにも使用できますが、Webアプリケーションにプラグインするために独自のハンドラーをロールする必要がある場合があります。 log4netは汎用のロギングフレームワークであるため、他のタイプの情報ロギングを行う必要がある場合、Log4netはELMAHを凌willします。 Log4netは、ほとんどすべての.NETアプリケーションでも使用できます。

90
Mark Coleman

Log4Netは、アプリケーション(Web、コンソール、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 [〜#〜]は目立たないIISロギング専用のプラグインexceptionsWebアプリケーションでは、アプリケーション内にELMAHへの参照は表示されず、対話するAPIもありません。モジュールとハンドラーを使用しますIIS拡張機能は動作をボルトで固定します。さらに、Webアプリケーションで発生したエラーを表示するWebフロントエンドがあります。Log4Netにはフロントエンドがなく、さまざまなログシンク(アペンダー)があります。ログファイル、syslogサーバー、データベースなどにログメッセージを送信します。

111
Mike Valenty

主な違いは、ELMAHが未処理のアプリケーション例外をログに記録することです。 log4netは、ログに記録するように指示したものをすべて記録します。未処理の例外をログに記録するようにlog4netを構成できますが、ELMAHはすぐに使える有益な情報を豊富にキャプチャします。

35
Jamie Ide

ELMAHは、エラーイベントにフックしてからロギングを行うhttpmoduleを作成することで機能します。これは、不適切な設計によって簡単に阻止および破損される可能性があります。 Log4Netでは追加の作業が事前に必要になる場合がありますが、AOPフレームワークを使用してそれをクラスまたはアセンブリに適用する場合、非常に少ないコードと労力ではるかに優れた例外ロギングを実現できます。

ELMAHは、WCFサービスでは実現が難しいHttpContextにアクセスできる場合にのみ機能します。とにかく、WCFでsom eotherロガーを使用することになります。より普遍的なソリューションを1つだけ使用しないでください。

5
Dustin Davis

ELMAH:

  • ウェブアプリケーション

Log4net:

  • ウェブアプリケーション

  • Windowsアプリケーション

その他の参照: ref_1ref_2

4
sgokhales

[〜#〜] elmah [〜#〜]はWebアプリケーション用に特別に使用されますが、log4netはWebおよびWindowsアプリケーションの両方で使用されます。 ELMAHには、Webアプリケーションでlog4netよりも多くの利点があります。

1
Adeel

ELMAHは非常に強力ですが、その機能も非常に特殊です。 Log4Netではyoを使用してエラー処理とログ記録を行う必要があると思いますが、多くの作業を行います。

0
Dean Thomas