私は.NETスタックに少し慣れていないので、.NETプラットフォームに slf4j に相当するものがあるかどうか疑問に思いました。私にとって、ファサードにログを記録し、必要に応じてログの実装を交換できることは理にかなっています。さらに、slf4jで利用可能なラッパーAPIは、使用していない単一のロギングフレームワークに対してコーディングされたサードパーティライブラリを使用する必要があるときに何度も節約してくれました。
Log4net、nLog、Enterprise Libraryなどのロガー間のファサードとして機能するプロジェクトはありますか?それらのライブラリへの呼び出しをショートカットして別のライブラリに転送できるラッパーはありますか?これを自分で行うためにオープンソースプロジェクトを開始する必要がありますか?正しい質問方法がわからないので、この質問は重複していますか?逆に、アスペクト指向プログラミングを使用してこれを行う一般的な方法はありますか?
すみません、これを使用しましたが、Apacheバージョンではないことを忘れました。これは実際にはオープンソースであり、共通インフラストラクチャと呼ばれるプロジェクトの一部です。 共通ロギング とも呼ばれます。 MS Enterprise、log4netなどで動作します。それはうまくいきます。
Castle Windsor ロギングファシリティ をご覧ください。
基本コードは ここ です。 Log4netアダプター ここ 。 NLogアダプター ここ 。
Serilog 用のアダプタを追加しました。
アダプターがない場合、ConsoleLogger、DiagnosticsLogger、StreamLogger、およびNullLoggerのサポートがあります。
他のロギングフレームワークへのアダプタを作成するのは非常に簡単です。
Simple Logging Facade をサポートしているように見えるので Object Guy's Logging Framework for .Net 箱から出して組み込んでいます。
私も同じ問題を抱えていました。上記の推奨事項を確認した後、Ninject.Extensions.Loggingを発見しました
とにかくファサードはDIと組み合わせて最も理にかなっているので、これは素晴らしいことです
NLog、NLog2、log4netのプロキシが付属しています。
これは、NLogと組み合わせて使用する方法の良い例です: http://blog.tonysneed.com/2011/10/09/using-nlog-with-dependency-injection/
この質問はすでに数年前のものであることを理解していますが、他のユーザーの完全性のために、私はまだこの「解決策」を投稿することを選択しました
これが書かれてから、 Fody.Anotar と呼ばれる別の興味深いロギングラッパーが登場しました。今日の時点で、それはおそらくそれらすべての中で最も完全です。他のほとんど、ただしLogging Faciliyはかなり古く、最も古いロガーのみをサポートしています。
NLog、Log4Net、Serilog、CommongLogging、Catel、LibLog、MetroLog、NServiceBus、Splat用のアダプターがあり、独自のライブラリ用のアダプターを作成できます。
Nugetを使用してインストールできます。 Anotar。*。Fodyパッケージ(Anotar.NLog.Fodyなど)を探します。
.NET Coreの更新:
LibLog -- https://github.com/damianh/LibLog -埋め込みロギングファサード、プロジェクトに埋め込まれているソースコードnugetパッケージ。 NLog、log4net、Serilog、LoupeLogを自動的に検出して使用します
Microsoft:Microsoft.Extensions.Logging.Abstractions -- https://github.com/aspnet/Logging 。 .NETCoreがサポートされています
共通ログ- https://github.com/net-commons/common-logging 。 .NETCoreは3.4.1以降サポートされており、活発な開発は行われていません
特にライブラリ/ APIの場合、ここにあるすべてのソリューションが満足のいくものではないことがどういうわけかわかりました。思いもよらなかったのですが、実際には、ほとんどの懸念に対処できるオープンソースの「ロガー」を作成しました。
たぶんあなたは Dapplo.Log を見ることができます、あなたはそれをNuGetから得ることができます。
アイデアはライブラリでDapplo.Logを使用することであり、これを使用するプロジェクトは、(必要に応じて)任意のログ出力を選択したロガーに送信できます。出力を指示するための例は、いくつかの主要なフレームワークの実装を使用したテストで見つけることができます ここ 。
おそらく(まだ)完璧ではないので、プルリクエストやチケットを歓迎します。