2012-03-19 31 views
0

经过一番努力之后,我设法使用了Ninject日志扩展和log4net作为日志框架的工作ASP.NET webforms应用程序。 (学分基本为this blog)。 但我对如何继续有一些疑问。在WebForms应用程序中使用带Ninject日志扩展的log4net

首先,我需要公开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"); 
} 

但offcourse夺的一切,我只是增加了.. 于是我找了其他人可能有这种情况的一些经验/最佳实践的抽象。

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

回答

1

其他问题:我已经升级到log4net的其中1.2.11.0是 当前版本的NuGet,现在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

+0

我不知道如何使用这个..我不断地结束与版本1.2.11。 – Hanno 2012-03-21 07:53:06

+0

我编辑我的答案,它是必须修改的allowedVersion属性。首先你必须先卸载1.2.11版本。然后更新你的packages.config文件,并运行install-package命令。 – user484189 2012-03-22 11:06:10