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


108

一部の人々はlog4netの代わりにELMAH を使用しています。何がそれを良くするのですか?

スタックオーバーフローの質問への回答で ELMAHについて知りまし。C#でログインするにはどうすればよいですか?



.netコアが図になりましたが、シナリオは変わりますか?(2018年1月現在、elmahは.netコアをサポートしていません)。
Chaitanya Gadkari

回答:


92

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

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


3
log4netを使用すると、より詳細に制御できます。
DarthVader

6
このELMAHアペンダーをlog4netに使用することで、両方の長所を得ることができます。ただ、log4netのと(デバッグ、情報、警告、エラー)のように、何をログに記録しますがELMAHの中でそれを格納nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

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サーバー、データベースなどにログメッセージを送信できるさまざまなログシンク(アペンダー)だけがあります。


23
Elmahには、開発者が操作できるAPIが1つあります。たとえば、信号はElmah Apiを通じて実現されます。
Ed DeGagne 2012

8
別の修正?ELMAHは.NET HttpModule / HttpHandlerです。IISプラグインではありません。ARRはプラグインです。ELMAHではありません。
Maxime Rouiller、

コメントに対するあなたの反応は何ですか?
Peter Mortensen

36

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


1
ELMAHは、適切に構成すれば、すぐに使える便利な情報を豊富に収集します。同じ時間で、より詳細に制御してlog4netでも同じことができます。
DarthVader

DarthVader-同じことを行うサンプルのlog4net設定がありますか?
JasonD 2012

5
ELMAHは、設定なしで豊富な有用な情報をそのまま取得します。追加の構成により、未処理の例外と処理された例外の両方を処理します。
Trevor de Koekkoek 2012

5

ELMAHは、エラーイベントにフックしてログを記録するHTTPモジュールを作成することで機能します。これは、設計が悪いと簡単に妨害され、壊れる可能性があります。Log4Netは追加の作業を事前に必要とする場合がありますが、AOPフレームワークを使用してそれをクラス全体またはアセンブリ全体に適用すると、非常に少ないコードと労力ではるかに優れた例外ロギングを実現できます。

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


4

エルマ:

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

Log4net:

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

  • Windowsアプリケーション

追加リファレンス:ref_1 ref_2


1

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


5
それらの利点は何ですか?私はASP.NETをすぐに行うので、あなたの教育された意見を知りたいのですが。私はまだ.NETの初心者なので、彼らのサイトで彼らが言っていることを私が解釈するのはもっと難しいです。
IAdapter 2011

コードを書かなくてもレポートを表示できます。elmahの機能はこちらcode.google.com/p/elmah
Adeel

Elmahは非常に制限されており、唯一の「利点」はレポートですが、HttpContextにアクセスできるWebアプリに限定されます。レポートできる他の多くのソースに、他のロガーにデータを記録させることができます。
ダスティンデイビス

0

ELMAHは非常に強力ですが、その機能も非常に具体的です。Log4Netではエラー処理とロギングを行う必要があると思いますが、多くの作業を行います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.