プロジェクトでログライブラリを使用する必要があり、Enterprise Logging BlockとNLogとlog4netの間で検討する必要があります。比較でいくつかのリンクを見つけましたが、それらのほとんどはかなり古く、長い間log4netの新しいバージョンがないなどの不満があります。
現在のデータに基づいて、使いやすさ、構成のしやすさ、パフォーマンス、スケーラビリティなどの点でどちらが優れているかについては誰でも提案があります。
私は個人的にlog4netが好きです。高速で安定しており、構成可能です(カスタムアペンダーなどで拡張するのは本当に簡単です)。
私は新しいリリースの欠如に悩まされていません-私の心の中でそれはコードベースが安定していて、それがすべき機能を含んでいることを証明するだけです。結局のところ、何よりもロギングを安定させたいのです。
これが 少し似た質問 です。おそらくそこからの回答のいくつかを使用することもできます。
より大きなプロジェクトでの使用について、log4netとNLogを評価しました。どちらも同様のインターフェースを備えており、高度に構成可能です。
NLogはより適切に維持されているようです。log4netと.Net4の非互換性は、長い間log4netで未解決のままでした。 Nlogには、NuGetパッケージや、構成ファイルを編集するためのVisual Studio用のXmlスキーマなど、いくつかの「付属品」が付属しています。
最後に、log4netのパフォーマンスを測定したため、log4netを選択しました。10000ログメッセージをファイルとネットワークログビューア(Log2Console)に書き込む単純なテストでは、log4netの10倍のパフォーマンスが示されました。構成ファイルの調整は行わず、ファイルとNotworkロガーは最小限の構成で使用されました。プロジェクトの一般的なログ設定でこれを確認する必要があります。
Common.Loggingを使用している場合は、「どのロガーを使用するか」の決定を延期できます。これは、ロギングがlog4net、nlog、System.Diagnostics.Debugに行くかどうかを設定できるロギングラッパーです。エンタープライズロギングブロックがわかりません。また、一般的なロギング用の「エンタープライズロギングブロック」プラグインがあるかどうかもわかりません。
見落とされがちなもう1つの違いは、NLogがBSD
であるのに対し、log4netはApache
ライセンスの下にあるということです。 ELBはMS-PL(Microsoftのオープンソースバージョン)です。ほとんどの場合、それは問題ではないかもしれません。
私はそれらすべてが非常に類似していて能力があると思います。私がEnterprise Library Logging Blockを使用してから数年になりますが、それでもそれはまともでした。 NLogとlog4netはどちらも堅実です。
どちらかを選択する理由の1つは、サードパーティのライブラリ統合です。たとえば、NHibernate、Quartz、またはlog4netを利用するその他のライブラリを使用している場合は、それが選択を促進する可能性があります。