0

经过一番努力,我设法获得了一个使用 Ninject 日志扩展和 log4net 作为日志框架的工作 ASP.NET webforms 应用程序。(基础知识归功于此博客)。但我有一些关于如何继续的问题。

首先,我需要公开 ILogger 属性,因为如果它是私有的或受保护的,它仍然为空。所以现在我有了这个:

[Inject]
protected ILogger _logger { get; set; }

代替:

private static readonly ILog Logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

我可以忍受它,但它似乎很奇怪。

另一件事是 log4net 用来填充当前上下文的 ThreadContext。我仍然可以这样使用它

using (ThreadContext.Stacks["NDC"].Push(MethodBase.GetCurrentMethod().Name))
{
     _logger.Info("test");
}

但是,这会带走我刚刚添加的所有抽象。所以我正在寻找其他人在这种情况下可能拥有的一些经验/最佳实践。

附加问题:我已将 log4net 升级到 NuGet 中的当前版本 1.2.11.0,现在 Ninject.Logging.log4net 已损坏,因为它需要版本 1.2.10.0 ...有没有办法解决这个问题?

4

1 回答 1

1

附加问题:我已将 log4net 升级到 NuGet 中的当前版本 1.2.11.0,现在 Ninject.Logging.log4net 已损坏,因为它需要版本 1.2.10.0 ...有没有办法解决这个问题?

您是否尝试在 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 回答