Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在WebForms应用程序中将log4net与Ninject日志记录扩展一起使用_Asp.net_Logging_Ninject Extensions - Fatal编程技术网

Asp.net 在WebForms应用程序中将log4net与Ninject日志记录扩展一起使用

Asp.net 在WebForms应用程序中将log4net与Ninject日志记录扩展一起使用,asp.net,logging,ninject-extensions,Asp.net,Logging,Ninject Extensions,经过一番努力,我终于找到了一个可以工作的ASP.NETWebForms应用程序,它使用Ninject日志扩展和log4net作为日志框架。(基础课程学分到)。 但我有一些关于如何继续的问题 首先,我需要将ILogger属性公开,因为如果它是私有的或受保护的,它将保持为空。 现在我有了这个: [Inject] protected ILogger _logger { get; set; } 而不是: private static readonly ILog Logger = LogManager.

经过一番努力,我终于找到了一个可以工作的ASP.NETWebForms应用程序,它使用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");
}
但这当然会带走我刚才添加的所有抽象内容。。 因此,我正在寻找其他人在这个场景中可能拥有的一些经验/最佳实践

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

附加问题:我已经将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或更高版本


我不知道该如何使用这个。。我一直使用版本1.2.11。我编辑我的答案,必须修改allowedVersion属性。您必须首先卸载1.2.11版本。然后更新packages.config文件,并运行install package命令。