Azure DevOps 发布更改 appsettings.json 日志记录部分

Posted

技术标签:

【中文标题】Azure DevOps 发布更改 appsettings.json 日志记录部分【英文标题】:Azure DevOps Release changing appsettings.json Logging section 【发布时间】:2018-10-12 13:53:59 【问题描述】:

我对 Azure DevOps 和发布管理有疑问。首先是一些背景知识——我们使用 visualstudio.com 以及构建代理、发布代理(在不同环境 VM 上运行)来管理我们的 CI、构建和发布。我正在尝试对我的非开发服务器上的日志记录进行故障排除,并将问题追溯到我的 appsettings.json 文件中缺少的元素。当我登录到生产虚拟机并查看 appsetings.json 文件时,我发现我的日志记录部分如下所示:

"Logging": 
    "IncludeScopes": false,
    "LogLevel": 
      "Default": "Information"
    
  ,

在我的构建工件(网站 .zip 文件)中的 appsettings.json 文件中看起来像这样:

"Logging": 
    "IncludeScopes": false,
    "LogLevel": 
      "Default": "Debug",
      "System": "Information",
      "Microsoft": "Information"
    
  ,

当我在服务器上更改 appsettings.json 日志记录部分以匹配构建 .zip 中的 appsettings 时,我的日志记录问题已得到解决。

我的问题是 - Azure DevOps 发布管道(以前称为 VSTS)中改变 appsettings.json 日志记录部分的内容是什么?我已验证我的发布定义没有对日志记录部分进行变量替换。

【问题讨论】:

我找到了一种使用发布变量和 json 变量替换的解决方法。将 Logging.LogLevel.Default 的变量添加到“Debug”可以让我为每个记录器输出调试行。不过,我没有看到限制某些记录器的方法。 【参考方案1】:

这看起来很像您的构建使用了错误的来源。您看到的错误 appsettings.json 是否可能反映了过时的版本?我不知道为什么会发生这种情况,但我过去在 Git 和 TFVC 中都看到过几次。

如果这是问题所在,则清理您的代理工作文件夹或在构建定义中选择(一次或永久)清理:

【讨论】:

检查了我的来源,它们来自正确的项目、存储库和分支。清理选项也设置为“true”和“所有构建目录”。您的评论让我仔细检查了正在构建的工件,并导致我在 appsettings 中找到了多个日志记录声明。下面回答...【参考方案2】:

发现了问题(这是一个愚蠢的问题)。问题最终是 appsettings.json 文件中 Logging 部分的多个声明。文件底部的声明有:

"Logging": 
"IncludeScopes": false,
"LogLevel": 
  "Default": "Information"

,

这将与部署的内容相匹配。

【讨论】:

以上是关于Azure DevOps 发布更改 appsettings.json 日志记录部分的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps 发布更改 appsettings.json 日志记录部分

如何在 Azure DevOps 中更改分支名称

Azure DevOps Pipeline 更改服务结构应用程序的证书权限

根据对子文件夹的更改触发 Azure DevOps 构建

作为 Azure DevOps 中发布管道的一部分,将更改推送到 GitHub 存储库

如何排除对管道 yaml 文件的更改以触发构建 i azure devops?