经过一番努力,我设法得到一个有效的ASP.NET webforms应用程序,它使用Ninject日志记录扩展和log4net作为日志记录框架。 (归功于this blog的基础知识)。 但我对如何继续提出了一些问题。
首先,我需要公开ILogger属性,因为如果它是私有的或受保护的,它仍然是null。 所以现在我有了这个:
[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升级到1.2.11.0,这是NuGet中的当前版本,现在Ninject.Logging.log4net被破坏了,因为它期望版本1.2.10.0 ...有没有办法解决这个问题?
答案 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或更高版本。