Skip to content

Instantly share code, notes, and snippets.

@JamesWoolfenden
Created May 18, 2016 13:25
Show Gist options
  • Save JamesWoolfenden/aedfb47d46a7ff3c66af608d846de0ad to your computer and use it in GitHub Desktop.
Save JamesWoolfenden/aedfb47d46a7ff3c66af608d846de0ad to your computer and use it in GitHub Desktop.
Setup advanced logging for IIS thru AWS
Import-Module WebAdministration
$LoggingMSI="AdvancedLogging64.msi"
$uri='https://download.microsoft.com/download/9/6/5/96594C39-9918-466C-AFE0-920737351987/AdvancedLogging64.msi'
invoke-webrequest -uri $uri -OutFile $LoggingMSI
Start-Process -FilePath msiexec.exe -ArgumentList /i, $LoggingMSI , /quiet -Wait
# Disables http logging module
Set-WebConfigurationProperty -Filter system.webServer/httpLogging -PSPath machine/webroot/apphost -Name dontlog -Value true
# Adds AWS ELB aware X-Forwarded-For logging field
Add-WebConfiguration "system.webServer/advancedLogging/server/fields" -value @{id="X-Forwarded-For";sourceName="X-Forwarded-For";sourceType="RequestHeader";logHeaderName="x-forwarded-for";category="Default";loggingDataType="TypeLPCSTR"}
Add-WebConfiguration "system.webServer/advancedLogging/server/fields" -value @{id="X-Forwarded-Proto";sourceName="X-Forwarded-Proto";sourceType="RequestHeader";logHeaderName="X-Forwarded-Proto";category="Default";loggingDataType="TypeLPCSTR"}
Add-WebConfiguration "system.webServer/advancedLogging/server/fields" -value @{id="X-Forwarded-Port";sourceName="X-Forwarded-Port";sourceType="RequestHeader";logHeaderName="X-Forwarded-Port";category="Default";loggingDataType="TypeLPCSTR"}
#create logDefinition
Set-WebConfigurationProperty -Filter "system.webServer/advancedLogging/server/logDefinitions/logDefinition[@baseFileName='%COMPUTERNAME%-Server']" -name enabled -value true
$availableFields=Get-WebConfiguration system.webServer/advancedLogging/server/fields
foreach ($item in $availableFields.Collection)
{
Write-Host "Adding $($item.id) $($item.logHeaderName)"
Add-WebConfiguration "/system.webServer/advancedLogging/Server/logDefinitions/logDefinition[@baseFileName=""%COMPUTERNAME%-Server""]/selectedFields" -value @{logHeaderName="$($item.logHeaderName)";id="$($item.id)";}
}
Set-WebConfigurationProperty -Filter system.webServer/advancedLogging/server -PSPath machine/webroot/apphost -Name enabled -Value true
Set-WebConfigurationProperty -Filter system.applicationHost/advancedLogging/serverLogs -PSPath machine/webroot/apphost -Name directory -Value C:\inetpub\logs\AdvancedLogs
Set-WebConfigurationProperty -Filter system.applicationHost/sites/siteDefaults/advancedLogging -PSPath machine/webroot/apphost -Name directory -Value C:\inetpub\logs\AdvancedLogs
iisreset
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment