0

苦労した後、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が壊れています...これを修正する方法はありますか?

4

1 に答える 1

1

追加の質問: log4net を NuGet の現在のバージョンである 1.2.11.0 にアップグレードしましたが、バージョン 1.2.10.0 を想定しているため、Ninject.Logging.log4net が壊れています ... 修正する方法はありますか?

Packages.config ファイルの [xx] で許可されているバージョンを修正しようとしましたか?

  <package id="log4net" version="1.2.10"  allowedVersions="[1.2.10]" /> />

次回の更新で 1.2.11 以降にアップグレードできなくなります。

http://docs.nuget.org/docs/reference/versioning

于 2012-03-20T13:55:25.140 に答える