苦労した後、Ninjectロギング拡張機能とlog4netをロギングフレームワークとして使用するASP.NETWebフォームアプリケーションを機能させることができました。(基本については、このブログのクレジット)。しかし、続行する方法についていくつか質問があります。
まず、ILoggerプロパティをパブリックにする必要がありました。これは、プライベートまたは保護されている場合はnullのままであるためです。だから今私はこれを持っています:
[Inject]
protected ILogger _logger { get; set; }
それ以外の:
private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
私はそれと一緒に暮らすことができますが、それは奇妙に思えます。
もう1つは、log4netが現在のコンテキストを埋めるために使用するThreadContextです。私はまだこのようにそれを使うことができます
using (ThreadContext.Stacks["NDC"].Push(MethodBase.GetCurrentMethod().Name))
{
_logger.Info("test");
}
しかし、私が追加したばかりの抽象化をすべて取り除くオフコース..したがって、他の人がこのシナリオで持つ可能性のあるいくつかの経験/ベストプラクティスを探しています。
追加の質問:log4netをNuGetの現在のバージョンである1.2.11.0にアップグレードしましたが、バージョン1.2.10.0を想定しているため、Ninject.Logging.log4netが壊れています...これを修正する方法はありますか?