【问题标题】:Use log4net with Ninject logging extensions in WebForms application在 WebForms 应用程序中使用带有 Ninject 日志扩展的 log4net
【发布时间】:2012-03-19 14:36:39
【问题描述】:

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

首先,我需要将 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 ...有没有办法解决这个问题?

【问题讨论】:

    标签: asp.net logging ninject-extensions


    【解决方案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

    【讨论】:

    • 我不知道如何使用它。我一直在使用 1.2.11 版本。
    • 我编辑我的答案,它是必须修改的 allowedVersion 属性。您必须首先卸载 1.2.11 版本。然后更新您的 packages.config 文件,并运行 install-package 命令。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-28
    • 2013-04-15
    • 1970-01-01
    • 2021-04-01
    • 1970-01-01
    • 2010-09-20
    相关资源
    最近更新 更多