我们刚刚遇到这样一种情况,有人在错误的时间对错误的系统进行了部署,但没有人知道是谁做的,也不知道什么时候做的。
我查看了目标 Web 服务器上的 Windows 事件日志,没有看到任何似乎来自 MSDEPLOY 的内容。是否有某种日志?甚至只是说“同步已在时间经过用户“?
如果没有日志,我可以做些什么来强制输入某种日志?例如,是否有用于写入事件日志条目的提供程序,或者我可以使用哪个提供程序来写入文件?我想我可以运行一个可以进行某种形式日志记录的脚本,但是该脚本可以包含在包中吗?
抱歉问了这么多问题,但这今天成了热门话题!
请注意,我需要目标 Web 服务器上的日志。可以是日志文件,也可以是事件日志条目,但是为了审计目的,需要记录“John 在某个时间部署了某些东西”。
答案1
我之前研究过这个问题,据我所知,MSDEPLOY 不会在客户端记录任何内容。你所能做的就是将其输出重定向到一个文件 -
msdeploy.exe -verb:sync ... > logfile.log
如果有人在自动构建和部署工具之外手动运行这个程序,这当然是没有什么好处的。
您可以在目标服务器上记录 MSDEPLOY 活动(如果您使用 Web 部署服务进行部署),但如果您没有完整的 RDP 访问权限来获取日志,那么这可能不太方便。
我猜测 MS 将 MSDEPLOY 视为一种普通工具,就像 C# 编译器不会在每次编译源代码时在某处记录某些内容一样。
答案2
总是有 -verbose
详细 指定信息详细级别将包含在操作的输出中。默认情况下,包含警告、错误和严重详细级别。信息详细级别将返回操作期间触发的所有消息。
我不确定,但 -debug 对输出也有一些影响
注意:在使用 powershell 扩展的 TFS 构建中,我一直使用以下模式保存输出:
iex "msdeploy ..." | Out-String | %{ $log.LogMessage($_)}