从 Serilog.Sinks.ApplicationInsights v3.1 升级到 v4.0 时出现错误

Ale*_*key 19 c# serilog azure-functions

我有一个 Azure 函数,它使用 Serilog 通过Serilog AppInsights 接收器 v3.1写入 AppInsights 。

中的代码Startup.cs看起来像这样

Log.Logger = new LoggerConfiguration()
            .ReadFrom.Configuration(config)
            .CreateLogger();
Run Code Online (Sandbox Code Playgroud)

appsettings.json

"Serilog": {
    "Using": [
      "Serilog.Sinks.ApplicationInsights"
    ],
    "WriteTo": [
      {
        "Name": "ApplicationInsights",
        "Args": {
          "instrumentationKey": "...",
          "restrictedToMinimumLevel": "Verbose",
          "telemetryConverter": "Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights"
      }
    }
  ],
  ...
Run Code Online (Sandbox Code Playgroud)

它可以愉快地将应用程序日志写入AppInsights。

最新的 Github文档提到了遥测配置活动的弃用以及仪器密钥的未来删除支持,因此我想将该库升级到版本 4.0。

但是,当我将接收器升级到 v4.0 时,出现以下异常:

在此输入图像描述

请帮忙。

小智 44

所以我花了很多时间调试这个问题,因为我也遇到了这个问题。我承认我应该查看应用程序洞察接收器的 git 日志,因为有问题的提交就在这里

https://github.com/serilog-contrib/serilog-sinks-applicationinsights/commit/8e4e26a8fdfa12da6ed15afcc94889e5f399ff97#diff-bc9f0e00aaa0aef88484faa764a62f13d26f07bf6c2b6df21cd8d893aa47 c2e0

他们调整了名称空间,这导致 Serilog 配置绑定无法Serilog.Sinks.ApplicationInsights.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter再找到类型。相反,命名空间Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter如我链接的提交中所示。

希望这可以帮助

  • 非常感谢@DarrienSingleton,缩短的命名空间确实很有帮助。此外,我必须使用连接字符串而不是 InstrumentationKey 更改 **Args** 部分。`"Args": { "connectionString": "...", "telemetryConverter": "Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights" }` (4认同)
  • 如果他们在重大变更中提到这一点,那就太好了。 (4认同)