誰もが両方の経験がありますか?彼らはどのように互いに積み重ねますか?
そのうちの1つをエンタープライズアプリケーションのログインに使用することを計画しています。
参照:
編集:nlogまたはlog4netへの既存の依存関係はありません。
誰もが両方の経験がありますか?彼らはどのように互いに積み重ねますか?
そのうちの1つをエンタープライズアプリケーションのログインに使用することを計画しています。
参照:
編集:nlogまたはlog4netへの既存の依存関係はありません。
回答:
私は最近、次のプロジェクトのために「いくつかのロギンをプロトタイプ化する」ように命じられました。ロギングフレームワークの経験はありませんでした。数日間、Log4Net、NLog、Enterprise Libraryで調査し、チュートリアルを実行し、おもちゃのアプリなどを作成しました。3〜4週間後に戻ってきて、まとまりのあるデモにまとめます。うまくいけば、これのいくつかはあなたにとって有用です。
私たちのプロジェクトに対する私の推奨はこれです:
それはこれらの調査結果に基づいています(意見!):
明らかに私は今のところNLogが好きです。ただし、別の解決策があるにもかかわらず、それを使用するには不十分です。
あまり議論されていない重要な考慮事項は、サポートとアップデートです。
Log4Netは、バージョン1.2.10が2006年4月19日に公開されてから更新されていません。
対照的に、NLogは2006年以降積極的にサポートされており、log4netが最後に更新されたときに存在しなかった次のような多くのプラットフォームをサポートするNLog 2.0がまもなくリリースされます。
最近、両方のフレームワークでの経験があるので、各フレームワークについての見解を共有できると思いました。
既存のWebアプリケーションのロギングフレームワークを評価するように依頼され、さまざまなオンラインフォーラムを通過した後、NLog(v2.0)とlog4net(v1.2.11)に選択肢を絞り込みました。これが私の発見です:
NLogを使用した設定/起動は非常に簡単です。あなたは彼らのウェブサイトで入門チュートリアルを通り抜け、あなたは完了です。あなたは公平な考えを得ます、それはnlogでどのようになるかです。設定ファイルは非常に直感的で、誰でも設定を理解できます。例:内部ログをオンに設定する場合は、Nlog構成ファイルのヘッダーノードにフラグを設定します。これは、その場所であると予想される場所です。log4netでは、web.configのappSettingsセクションでさまざまなフラグを設定します。
log4netでは、内部ログはタイムスタンプを出力しません。Nlogでは、タイムスタンプ付きの素晴らしいログを取得します。私の評価ではそれがとても役に立ったと思います。
log4netのフィルター-この質問をよく確認してください-log4netフィルター-ログメッセージを無視するように記述してフィルター処理する方法。このための回答/解決策を見つけた場合は、お知らせください。独自のカスタムフィルターを作成できるため、この質問には回避策があります。しかし、log4netで簡単に利用できないもの。
パフォーマンス-ストアドプロシージャを使用して、約3000のログメッセージをデータベースに記録しました。単純なforループ(int i = 0; i <3000; i ++ ...を使用して、同じメッセージを3000回記録しました。書き込みの場合:log4net AdoAppenderは、NLogのほぼ2倍の時間を要しました。
Log4netは非同期アペンダーをサポートしていません。
ロギングフレームワークとしてNLogを選択することは、私にとって十分な比較でした。:)
このスレッドに遅れて到着した方は、.Net Base Class Library(BCL)をもう一度確認してください。TraceSourceクラスが導入されたとき(2005年頃)、多くの人々は.Net 1.1と.Net 2.0の間の変更を見逃していました。
TraceSourceの使用は他のロギングフレームワークと同様であり、ロギングのきめ細かい制御、app.config / web.configでの構成、プログラムによるアクセスが可能で、エンタープライズアプリケーションブロックのオーバーヘッドがありません。
「log4netとTraceSource」のように、さまざまな比較が浮かんでいます。
まず、残りのスタックを確認します。
NHibernateを使用している場合は、Log4Netを直接利用します。他のフレームワークには、必要な他の特定のロガーがある場合があります。
それ以外はどちらも正常に動作します。
自分でLog4Netを選択しました。設定が面倒な場合があります。正しく設定されていない場合、何が問題だったかを理解するのは面倒です。しかし、ロガーに必要なほとんどすべてのことを実行させることができます。
Log4Netに未解決の問題がない場合は、Log4Netの開始方法について私が書いた記事を以下に示します。http://elegantcode.com/2007/12/07/getting-started-with-log4net/
まあ..データベースロギングタスクにエンタープライズライブラリを使用しましたが、パフォーマンスのボトルネックのため、NLogに切り替えました。
いくつかの比較情報:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
上記をエコーし、nLogを優先します。Entlibは不必要に肥大化しています。
Re:Log4net log4netで常に私に得られることの1つは、コンポーネントを初期化するためにglobal.asaxに以下を追加するのを忘れていることです。
log4net.Config.XmlConfigurator.Configure();
気づいたように、log4netはアプリケーションの実行中ずっと出力ファイルをロックするため、削除することはできません。それ以外は似ています。
だから私はNLogを好む。
私が実行しているオープンソースプロジェクトの恥知らずなプラグインですが、どの.NETロギングフレームワークがよりアクティブであるかについて活発な議論がなされたので、私はSerilogへの必須リンクを投稿すると思いました。
アプリケーション内で使用するために、Serilogはlog4netに似ています(そして、それを多用しています)。ただし、他の.NETログオプションとは異なり、Serilogはオフライン分析のためにログイベントの構造を保持することを目的としています。あなたが書くとき:
Log.Information("The answer is {Answer}", 42);
ほとんどのロギングライブラリは、メッセージをすぐに文字列にレンダリングします。Serilogもそれを行うことができますが、{ Answer: 42 }
プロパティを保持するため、後でいくつかのNoSQLデータストアの1つを使用して、の値に基づいてイベントを適切にクエリできますAnswer
。
私たちは1.0に近づいており、すべての最新(.NET 4.5、Windowsストア、Windows Phone 8)プラットフォームをサポートしています。
アンマネージコードでも動作するので、NLogも2番目に使用しています。log4netとlog4cxxを一緒に使用することも考えられますが、NLogはそのままの状態でマネージコードとアンマネージコードの両方を処理します。
ロギングAPIを抽象化するファサードであるCommon.Loggingも調べました。これは、log4net、NLog、およびEntreprise Libraryをサポートしています。私はそれを使用するつもりはありませんが、ログが無効になっているときにパフォーマンスを改善するためにラムダをどのように使用するかが好きです(NLogやおそらく他の機能と共有されている機能)。
Microsoft Enterprise Library Logging Blockも検討してください。素敵なデザイナーが付いています。
私の経験に基づくと、SmartInspectはNLogとlog4netの両方に勝っています。
非常に使いやすく、ドキュメントが充実しており、インタラクティブなログビューアを使用して以前にログに記録されたメッセージを表示およびフィルタリングできます。これは、現実に大きな利点です。
私が気に入っている点の1つは、Chromeのブラウザータブのようなデータのタブ付きビューです。各タブは、ログの異なるフィルタービューを提供できます。