355

両方経験した人いますか?それらはどのように互いに積み重なっていますか?

そのうちの 1 つをエンタープライズ アプリケーションへのログインに使用する予定です。

参考文献:

log4net

nlog

編集: nlog または log4net への既存の依存関係はありません。

4

15 に答える 15

383

私は最近、次のプロジェクトのために「いくつかのlogginのプロトタイプを作成する」という任務を負いました。ロギングフレームワークの経験はありませんでした。Log4Net、NLog、Enterprise Libraryで数日間、調査、チュートリアルの実行、おもちゃのアプリの作成などを行いました。3〜4週間後に戻ってきて、それらをまとめてまとまりのあるデモにしました。うまくいけば、これのいくつかはあなたに役立つでしょう。

私たちのプロジェクトに対する私の推奨事項は次のとおりです。

  1. 直接の依存関係を回避するには、ロギングファサード(例:Common.LoggingSimpleLoggingFacade )を使用します。
  2. エンタープライズライブラリを他の機能に使用することになった場合は、それをロギングにも使用します。
  3. Log4Netに依存するものを使用することになった場合は、Log4Netを使用してください。
  4. 上記のいずれでもない場合は、NLogを使用してください。私が好む。

これは、これらの調査結果(意見!)に基づいています。

  • 3つのフレームワークはすべて機能があり、いくつかの洗練された処理を実行できます。高品質のソリューションが必要ですが、率直に言って、超高性能や60種類のイベントシンクは必要ありません。
  • 3つすべてが非常によく似た基本概念を持っています。
  • それぞれに、非常に高度なルーティング、動的ログファイル名、ファイルの切り捨てなど、独自の優れたトリックがあります。
  • 3つすべては、独自の方法でかなりよく文書化されています。
  • 私のような完全な初心者にとって、彼らは最初はすべて少し厄介でした。ここでは基本的な違いはありません。私はそれを乗り越えました。
  • 数週間後に物事を再検討したとき、NLogは明らかに再開するのが最も簡単でした。少しブラッシュアップする必要がありました。Log4Netを使用して、作業を開始するためにいくつかのオンライン例を再検討する必要がありました。EntLibを使用して、私はあきらめ、チュートリアルを最初からやり直しました。私は完全に迷子になりました。
  • EntLibにデータベースへのログ記録などを実行させる方法がわかりませんでした。簡単かもしれませんが、制限時間を超えていました。
  • Log4NetとNLogのコード内フットプリントは小さいです。EntLibはスパムですが、とにかくファサードを使用します。
  • 誤ってEntLibを誤って構成しましたが、実行時に通知されました。Log4Netはしませんでした。NLogで偶発的な設定ミスはありませんでした。
  • EntLibには、見栄えの良いapp.configエディターが付属しており、100%必要です。NLogには構成ファイルスキーマがあるため、「インテリセンス」を取得できます。Log4Netにはnadaが付属しています。

だから明らかに私はこれまでのところNLogが好きです。ただし、別のソリューションが利用可能であるにもかかわらず、それを使用するには十分ではありません。

于 2010-01-22T23:47:01.890 に答える
158

あまり議論されていない重要な考慮事項は、サポートと更新です。

2006 年 4 月 19 日にバージョン 1.2.10 が公開されて以来、Log4Net は更新されていません

対照的に、NLog は 2006 年から積極的にサポートされており、log4net が最後に更新されたときには存在しなかった多くのプラットフォームをサポートする NLog 2.0が間もなくリリースされます。

  • NET Framework 2.0 SP1 以降、3.5 & 4.0 (クライアントおよび拡張プロファイル)
  • シルバーライト 2.0、3.0、4.0
  • .NET コンパクト フレームワーク 2.0、3.5
  • Mono 2.x プロファイル
于 2010-10-01T17:05:01.990 に答える
97

最近、両方のフレームワークを経験したので、それぞれのフレームワークについて私の見解を共有できると思いました。

既存の Web アプリケーションのロギング フレームワークを評価するように依頼されました。さまざまなオンライン フォーラムを調べた後、選択肢を NLog (v2.0) と log4net (v1.2.11) に絞り込みました。ここに私の発見があります:

  1. NLog の設定/起動は非常に簡単です。彼らの Web サイトで入門チュートリアルを実行すると、完了です。nlog を使用するとどうなるか、かなりのアイデアが得られます。構成ファイルは非常に直感的で、誰でも構成を理解できます。例: 内部ログをオンに設定する場合は、Nlog 構成ファイルのヘッダー ノードにフラグを設定します。これは、期待される場所です。log4net では、web.config の appSettings セクションでさまざまなフラグを設定します。

  2. log4net では、内部ログにタイムスタンプが出力されず、面倒です。Nlog では、タイムスタンプ付きの素敵なログが得られます。評価にとても参考になりました。

  3. log4net のフィルタ -私のこの質問 - log4net フィルタ - ログ メッセージを無視する AND フィルタの書き方を確認してください。これに対する回答/解決策が見つかった場合は、お知らせください。独自のカスタム フィルターを作成できるため、この質問には回避策があることを理解しています。しかし、log4net では簡単に利用できないものです。

  4. パフォーマンス - ストアド プロシージャを使用して、約 3000 のログ メッセージをデータベースに記録しました。シンプルな for ループ (int i=0; i<3000; i++...) を使用して、同じメッセージを 3000 回ログに記録しました。

  5. Log4net は非同期アペンダーをサポートしていません。

ロギング フレームワークとして NLog を選択することは、私にとって十分な比較でした。:)

于 2011-12-27T23:15:32.670 に答える
36

遅れてこのスレッドにたどり着いた人は、.Net Base Class Library (BCL) を振り返ってみてください。TraceSourceクラスが導入され たとき (2005 年頃)、多くの人が .Net 1.1 と .Net 2.0 の間の変更を見逃していました。

TraceSource の使用は、エンタープライズ アプリケーション ブロックのオーバーヘッドなしで、ログの詳細な制御、app.config/web.config での構成、およびプログラムによるアクセスを使用して、他のログ フレームワークと類似しています。

「log4net vs TraceSource」など、さまざまな比較も行われています。

于 2010-08-31T18:06:48.003 に答える
34

私たちにとって、主な違いは全体的なパフォーマンスです...

Logger.IsDebugEnabled私たちのテストから、NLog と Log4Net を比較してみてください。

乾杯、フロリアン

于 2009-10-22T10:19:24.263 に答える
16

ええと..データベースロギングタスクにエンタープライズライブラリを使用しましたが、パフォーマンスのボトルネックのためにNLogに切り替えました。

いくつかの比較情報:

http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html

于 2010-10-07T20:10:11.907 に答える
14

私は上記に反響し、nLog を好みます。Entlib は不必要に肥大化しています。

Re:Log4net log4net でいつも気になることの 1 つは、コンポーネントを初期化するために global.asax に次を追加するのを忘れていることです。

log4net.Config.XmlConfigurator.Configure();
于 2010-06-27T14:50:20.777 に答える
13

ここにアクセスすると、NLog と Log4Net の両方のライブラリ、Enterprise Lib およびその他の製品を含む包括的なマトリックスを見つけることができます。

マトリックスは、マトリックスに存在する唯一の商用ライブラリの機能を強調する方法で作成されていると主張する人もいるかもしれません。それは本当だと思いますが、とにかく、NLog に対して私の選択を推進するのに役立ちました。

よろしく

于 2010-09-25T10:14:33.210 に答える
9

お気づきのように、log4net は、アプリケーションの実行中は常に出力ファイルをロックするため、それらを削除することはできません。それ以外は似ています。

だから私はNLogを好みます。

于 2009-09-04T16:53:40.883 に答える
8

管理されていないコードでも機能するため、NLogも2番目に使用します。log4netとlog4cxxを一緒に使用することも可能だと思いますが、NLogはマネージドコードとアンマネージドコードの両方をそのまま処理します。

また、ロギングAPIを抽象化するファサードであるCommon.Loggingも調べました。これは、log4net、NLog、およびEntrepriseLibraryをサポートしています。私はそれを使用するとは思いませんが、ロギングが無効になっているときにパフォーマンスを向上させるためにラムダを使用する方法が好きです(NLogやおそらく他の人と共有されている機能)。

于 2011-01-05T13:36:26.257 に答える
4

また、 Microsoft Enterprise LibraryLoggingBlockを検討することもできます。素敵なデザイナーが付いてきます。

于 2009-04-02T18:18:36.730 に答える
2

一般的なコンセンサスは、nlog の方が構成と使用が少し簡単だということだと思います。どっちも有能だけど。

于 2009-05-04T01:44:48.837 に答える
0

私の経験によると、SmartInspectは NLog と log4net の両方に勝っています。

非常に使いやすく、ドキュメンテーションが優れており、インタラクティブなログ ビューアを使用して、以前にログに記録されたメッセージを表示およびフィルタリングできます。これは、現実世界での大きな利点です。

私が気に入っていることの 1 つは、Chrome のブラウザー タブのような、データのタブ ビューです。各タブは、ログの異なるフィルター処理されたビューを提供できます。

于 2013-08-10T11:18:09.410 に答える