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 Pipeline 更改服务结构应用程序的证书权限