Назад | Перейти на главную страницу

Может ли Windows DSC сделать настройку журналирования IIS менее ужасной для души?

Это то, что мне пришлось сделать, чтобы настроить ведение журнала IIS. Я скопировал это из большего набора скриптов, поэтому форматирование / синтаксис может быть не на 100%, но это работает и является своего рода идемпотентным в том смысле, что его можно запускать миллион раз, ничего не ломая, но это ужасно отстой.

IIS (<.net core) ужасен, но я должен его поддерживать. Я смотрю на эти сценарии и хочу знать, возможно ли сделать все это с помощью DSC таким образом, чтобы его было легче читать и определять.

#PS equivalent of appcmd doesnt work
#Remove-WebConfigurationLock -Filter '/system.webServer/httplogging';
#Remove-WebConfigurationLock -filter '/system.applicationHost/log';

C:/Windows/system32/inetsrv/appcmd unlock config /section:httpLogging

Set-WebConfigurationProperty -PSPath "MACHINE/WEBROOT/APPHOST/my_app" `
  -Filter "/system.webServer/httplogging" -Name dontlog -Value $false

# appcmd equivalent: .\appcmd unlock config /section:httpLogging
Set-WebConfigurationProperty -Force -PSPath 'MACHINE/WEBROOT/APPHOST' `
  -Filter "system.applicationHost/sites/site[@name='my_app']" `
  -name "logfile" -value @{ `
    logFormat="W3C"; `
    directory = "C:/inetpub/my_app/logs/IIS"; `
    logTargetW3C="File"; `
    period="MaxSize"; `
    truncateSize="60000000"; `
    localTimeRollover="true"

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' `
  -filter "system.applicationHost/sites/site[@name="my_app"] `
  /logFile" -name "LogExtFileFlags" -value "Date,Time,ClientIP,UserName,SiteName,ComputerName,ServerIP,Method,UriStem,UriQuery,HttpStatus,Win32Status,BytesSent,BytesRecv,TimeTaken,ServerPort,UserAgent,Cookie,Referer,ProtocolVersion,Host,HttpSubStatus"

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' `
  -filter "system.applicationHost/sites/site[@name='my_app'] `
  /logFile/customFields" -name "." -value @{logFieldName='X-FORWARDED-For';sourceName='X-FORWARDED-For';sourceType='RequestHeader'},@{logFieldName='X-FORWARDED-Proto';sourceName='X-FORWARDED-Proto';sourceType='RequestHeader'},@{logFieldName='Authorization';sourceName='Authorization';sourceType='RequestHeader'}