Enable debug logging

To troubleshoot a deployment error, it helps to gather more information. Use Azure PowerShell to enable debug logging. You can get data about a deployment's request and response to learn the cause of the problem. Debug logging works with Azure Resource Manager templates (ARM templates) and Bicep files.

Get debug information

Use New-AzResourceGroupDeployment to set the DeploymentDebugLogLevel parameter to All, ResponseContent, or RequestContent. When debug logging is enabled, a warning is displayed that secrets like passwords or listKeys can be logged by commands like Get-AzResourceGroupDeploymentOperation.

New-AzResourceGroupDeployment `
  -Name exampledeployment `
  -ResourceGroupName examplegroup `
  -TemplateFile azuredeploy.json `
  -DeploymentDebugLogLevel All

The output shows the debug logging:

DeploymentDebugLogLevel : RequestContent, ResponseContent

To view all the properties for deployment operations:

Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup

You can specify a property, like StatusMessage or StatusCode to filter the output.

(Get-AzResourceGroupDeploymentOperation `
  -DeploymentName exampledeployment `
  -ResourceGroupName examplegroup).StatusMessage

Nested template

To log debug information for a nested ARM template, use the Microsoft.Resources/deployments debugSetting element.

{
  "type": "Microsoft.Resources/deployments",
  "apiVersion": "2020-10-01",
  "name": "nestedTemplate",
  "properties": {
    "mode": "Incremental",
    "templateLink": {
      "uri": "{template-uri}",
      "contentVersion": "1.0.0.0"
    },
    "debugSetting": {
       "detailLevel": "requestContent, responseContent"
    }
  }
}

Bicep uses modules rather than Microsoft.Resources/deployments. With modules, you can reuse your code to deploy a Bicep file from another Bicep file.

Next steps