【问题标题】:MissingMethodException Serilog.Context.LogContext.PushMissingMethodException Serilog.Context.LogContext.Push
【发布时间】:2020-12-12 19:24:32
【问题描述】:

我在我的解决方案中对我的 NuGet 包做了一些 consolidation,现在我收到了:

异常信息:

MissingMethodException:找不到方法:'System.IDisposable Serilog.Context.LogContext.Push(Serilog.Core.ILogEventEnricher)'。

异常调用堆栈:

在 Serilog.Extensions.Logging.SerilogLoggerProvider.BeginScope[T](T 状态) 在 Microsoft.Extensions.Logging.Logger.BeginScope[TState](TState 状态)

当我这样打电话时:

using (logger.BeginScope(new Dictionary<string, object>
{
    ["SomeProperty"] = someVariable,
}))
{
    logger.LogInfo("hello world");
}

package.config

<package id="Microsoft.Extensions.Logging" version="2.1.1" targetFramework="net48" />
<package id="Serilog" version="2.10.0" targetFramework="net48" />
<package id="Serilog.Extensions.Logging" version="3.0.1" targetFramework="net48" />

我的 NuGet 引用似乎不正确,但我没有看到它。

我还整理了一个full repro of the problem here

【问题讨论】:

    标签: c# serilog microsoft-extensions-logging


    【解决方案1】:

    如您所知,问题在于包 Serilog.Enrichers.ClientInfo 包括 NuGet 包中的旧版本 Serilog.dll,这是错误的(因为它应该是仅通过 NuGet 的依赖项),因此长期- term fix 是 as you reported 的维护者修复。

    短期解决方法是手动编辑您的 .csproj 文件以使用来自 Serilog 包的正确 Serilog.dll

    <Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
      <HintPath>..\packages\Serilog.2.10.0\lib\net46\Serilog.dll</HintPath>
    </Reference>
    

    您的repro project 指向Serilog.dll,它位于Serilog.Enrichers.ClientInfo 包内:

    <Reference Include="Serilog, Version=2.0.0.0, Culture=neutral, PublicKeyToken=24c2f752a8e58a10, processorArchitecture=MSIL">
      <HintPath>..\packages\Serilog.Enrichers.ClientInfo.1.1.2\lib\net452\Serilog.dll</HintPath>
    </Reference>
    

    您还可以添加一个构建后步骤,该步骤始终将正确的Serilog.dll 复制到项目的输出文件夹中。


    更新:此问题已在 Serilog.Enrichers.ClientInfo v1.1.3 中修复。

    【讨论】:

      【解决方案2】:

      Serilog.Enrichers.ClientInfo 包括 Serilog v2.4.0.0,一个旧版本,以及他们的 NuGet 包:

      我在 GitHub 项目上打开了an issue

      【讨论】:

      • 如果您将项目的引用直接添加到 Serilog,一切都应该正常。
      • 嗨@NicholasBlumhardt - 我提到了 Serilog,不知道为什么这不起作用?‍♂️。我整理了一个repro here。我希望您能对此提出意见!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多