经过一番努力,我设法获得了一个使用 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 ...有没有办法解决这个问题?