ベストアンサー1
最近、今後のプロジェクトのために「ロギングのプロトタイプを作成する」というタスクを任されました。ロギング フレームワークの経験はまったくありませんでした。数日間、Log4Net、NLog、Enterprise Library について調査し、チュートリアルを実行し、おもちゃのアプリなどを作成しました。3 ~ 4 週間後に戻ってきて、それらをまとめてまとまりのあるデモを作成しました。この内容が皆さんのお役に立てば幸いです。
私たちのプロジェクトに対する私の推奨事項は次のとおりです。
- ログファサードを使用する(例:共通.ログ記録、シンプルなロギングファサード) を使用して直接的な依存関係を回避します。
- 他の機能に Enterprise Library を使用する場合は、Logging にも使用します。
- Log4Net に依存するものを使用する場合は、Log4Net を使用します。
- 上記のいずれにも該当しない場合は、NLog を使用してください。私はこれを好みます。
これは以下の調査結果(意見!)に基づいています。
- 3 つのフレームワークはすべて機能があり、高度な処理を実行できます。私たちは高品質のソリューションを求めていますが、率直に言って、超高性能や 60 種類のイベント シンクは必要ありません。
- これら 3 つはすべて、基本的な概念が非常に似ています。
- それぞれに、非常に高度なルーティング、動的なログ ファイル名、ファイルの切り捨てなど、独自の優れた機能があります。
- これら 3 つは、それぞれ独自の方法で非常によく文書化されています。
- 私のような完全な初心者にとっては、最初はどれも少しぎこちなかった。基本的な部分では劇的な違いはない。私はそれを乗り越えた。
- 数週間後に再度学習してみると、NLog は明らかに再開が最も簡単でした。復習はほとんど必要ありませんでした。Log4Net では、開始するためにオンラインの例をいくつか再度確認する必要がありました。EntLib では、あきらめてチュートリアルを最初からやり直しました。完全に途方に暮れていました。
- EntLib でデータベースへのログ記録などの操作を実行する方法がわかりませんでした。簡単かもしれませんが、時間制限を超えてしまいました。
- Log4Net と NLog はコード内のフットプリントが小さいです。EntLib はスパムっぽいですが、とにかくファサードを使用します。
- 誤って EntLib を誤って構成してしまい、実行時に通知されました。Log4Net では通知されませんでした。NLog では誤って構成を誤ったことはありませんでした。
- EntLib には、見栄えの良い app.config エディタが付属しており、これは 100% 必要です。NLog には構成ファイル スキーマがあるため、「インテリセンス」を利用できます。Log4Net には何も付属していません。
これまでのところ、NLog が気に入っているのは明らかです。ただし、別のソリューションが利用可能であるにもかかわらず、NLog を使用するほどではありません。