21

編集: Common.Logging 2.1.1 は 2012 年 6 月 9 日にリリースされ、Github ページはかなり活発で、著者はプロジェクトの健全性について具体的にコメントしています

新しい .NET プロジェクトでCommon.Loggingの使用を検討していますが、プロジェクトが非アクティブになっているように見えることを少し心配しています。ホームページは2009 年に最後に更新され、SourceForge で利用可能な最新バージョンは 2010 年に作成されました。私はすでにNLog 2 との非互換性を発見しており、これが時間の経過とともにより大きな問題になる可能性があることを懸念しています。Enterprise Library 5.0 は互換性があるとしてリストされていないことに気付きましたが、試したことはありません。

同様の共通インターフェイスを提供する他の代替手段はありますか?

4

3 に答える 3

17

Common.Logging を 4 年間使用しており、NLog2 で使用できます。あなたの質問に完全に答えるには、まず Common.Logging を詳しく調べる必要があります。Common.Logging には、次の 2 つの利点があります。

  1. 1.x 以降、Common.Logging を使用すると、ロギング フレームワークから独立してアプリケーションを作成できます。そのため、アプリケーションを再コンパイルすることなく、あるロギング フレームワークから別のロギング フレームワークに簡単に変更できます。これは、異なるロギング フレームワークを使用するさまざまなアプリケーションで使用される可能性のある共通ライブラリの開発に特に役立ちます。

  2. 2.x 以降では、Common.Logging を使用して、さまざまなログ フレームワークからのログ情報を集約できます。アプリケーションを開発していて、A3rd.dll と B3rd.dll などの 2 つのサード パーツ ライブラリを活用したいとします。A3rd.dll は log4net を使用しますが、B3rd.dll は NLog を使用します。A3rd.dll と B3rd.dll のログ情報を 1 つのログ ファイル (またはログ監視システム) に統合するにはどうすればよいでしょうか。Common.Logging は、たとえば、NLog からログ メッセージをキャプチャして log4net に送信し、log4net にそれをログ ファイルに書き込むか、log4net が実行できる任意の場所に送信させることができます。

さて、NLog2 に戻ります。NLog2 のロギング API は NLog1 と下位互換性がありますが、構成とターゲティングの API が変更されました。したがって、ログ メッセージを NLog2 に送信することだけが必要な場合は、単にアセンブリ リダイレクトを実行できます (ここで私の回答を参照してください: Can NLog v2 を Common.Logging と共に使用できます)。

そうは言っても、Common.Logging を使用して NLog2 メッセージを他のログ フレームワークに集約する場合、アセンブリ リダイレクト アプローチは機能しません。NLog2 固有のアダプターを作成する必要があります。

@Kugelが言ったように、非アクティブは安定して成熟したことを意味する可能性があります。Common.Logging はさまざまなログ フレームワークで動作するため、サポートされているログ フレームワークのいずれかがリリースされるたびに新しいバージョンがリリースされることはほとんどありません。そうでなければ、助けというよりも混乱を招く可能性があります。したがって、アセンブリのリダイレクトは常に最初に考慮する必要があります。NLog2 メッセージのリダイレクトについて述べたように、実際に非互換性の問題が発生した場合にのみ、メーリング リストに電子メールを送信してください。誰かが飛び込んで助けてくれると確信しています。

乾杯、ケネス

于 2011-07-29T17:37:54.327 に答える
1

bclcontrib-abstractプロジェクトのこの領域で何かが起こっているようです。

http://code.google.com/p/bclcontrib-abstract/source/browse/Contoso.Abstract.NLog/Abstract/NLogServiceLog.cs

NuGetパッケージを試したのBclContrib-Abstract.NLog 0.1.5ですが、Contoso名前空間(Contoso.Abstract.NLog)の下に配置する方法が好きではありません。

于 2011-07-21T15:48:02.660 に答える
1

サポートされていないライブラリ (NLog2 など) を使用したい場合、1 つのオプションはカスタムを実装することのようFactoryAdapterです。これがどれほど難しいかはわかりませんが、オプションになる可能性があります。

まだサポートされていない新しいログ ライブラリをプラグインする場合は、Common.Logging.ILoggerFactoryAdapter インターフェイスを実装するロガー ファクトリ アダプターを提供する必要があります。ロガーは、Common.Logging.ILog インターフェイスを実装する必要があります。

ソース: http://netcommon.sourceforge.net/docs/2.0.0/reference/html/ch01.html#logging-advanced-customfactoryadapter

アップデート:

これは、NLog 2 の実装での私の最初の試みです。自己責任で使用してください。コメント歓迎:

https://gist.github.com/1107148

于 2011-07-21T15:20:52.830 に答える