【问题标题】:Receiving Sentry error logs from Azure Devops (After Release)从 Azure Devops 接收 Sentry 错误日志(发布后)
【发布时间】:2022-09-30 05:19:53
【问题描述】:

我有一个集成了 Sentry.io 日志记录的 .Net 项目。 API 调用的基本异常处理(如果 api 调用和反序列化失败)。存储库、构建和发布管道位于 Azure Devops

我看到成千上万的错误出现,并认为是我在 IIS 中运行的应用程序导致了这种情况,但我注意到错误的来源是一个看起来像 devops (D:\\a\\1\\s... )。

只有当我删除异常处理并构建/释放它时,错误才会停止。为了测试我的理论(在它停止之后),我重新添加了错误处理并重新发布了最新版本,它又重新开始了。 (我的发布管道只提取文件、停止 IIS、传输文件、启动 IIS)

知道什么可能导致这种情况/避免它在未来发生吗?

编辑:我添加了一个步骤来删除提取的文件,但这并不能解决问题

即使我的服务器上有一个私人发布代理。错误路径与 Azure Devops 中托管的文件一致,而不是我的服务器上

    标签: .net azure-devops sentry


    【解决方案1】:

    听起来您的项目中在 Azure DevOps 中运行的测试可能正在调用初始化 Sentry 的代码。

    而一个可以以这种方式使用 Sentry,我不推荐它。 Sentry .NET SDK 主要设计用于在实际应用程序中使用,并且在该应用程序的生命周期内仅初始化一次。

    单元测试通常在同一进程中并行运行,这可能会重复初始化 SDK。

    我建议避免在单元测试中初始化 Sentry。有几种方法可以做到这一点:

    • 您可以重构您的代码,以防止从测试中调用SentrySDK.InitUseSentry 等。

    • 您可能能够将 Sentry DSN 移动到特定于环境的配置文件,并且仅在生产时加载它。

    • 在这种情况下,您可以尝试检测 Azure Pipelines 环境而不初始化 Sentry。例如:

      // The "AGENT_ID" env var will be populated in an ADO Pipeline
      if (Environment.GetEnvironmentVariable("AGENT_ID") != null)
      {
          SentrySDK.Init();
      }
      

    【讨论】:

      猜你喜欢
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多