有没有办法在IIS中的特定网站上激活日志记录字段,最好是通过PowerShell?
我想激活客户端IP地址'记录字段,无需RDP到机器并手动设置。
我正在使用IIS 8.5运行Windows Server 2012
答案 0 :(得分:1)
您还可以使用以下方法设置标记,根据下面的列表,您可以使用所需标记的总值。
将值设置为2到标志号的功率。总计您想要打开的所有标志,并获得可以将logExtFileFlags设置为的值。
<flag number= "0" flag name="Date" value="1" />
<flag number= "1" flag name="Time" value="2" />
<flag number= "2" flag name="ClientIP" value="4" />
<flag number= "3" flag name="UserName" value="8" />
<flag number= "4" flag name="SiteName" value="16" />
<flag number= "5" flag name="ComputerName" value="32" />
<flag number= "6" flag name="ServerIP" value="64" />
<flag number= "7" flag name="Method" value="128" />
<flag number= "8" flag name="UriStem" value="256" />
<flag number= "9" flag name="UriQuery" value="512" />
<flag number= "10" flag name="HttpStatus" value="1024" />
<flag number= "11" flag name="Win32Status" value="2048" />
<flag number= "12" flag name="BytesSent" value="4096" />
<flag number= "13" flag name="BytesRecv" value="8192" />
<flag number= "14" flag name="TimeTaken" value="16384" />
<flag number= "15" flag name="ServerPort" value="32768" />
<flag number= "16" flag name="UserAgent" value="65536" />
<flag number= "17" flag name="Cookie" value="131072" />
<flag number= "18" flag name="Referer" value="262144" />
<flag number= "19" flag name="ProtocolVersion" value="524288" />
<flag number= "20" flag name="Host" value="1048576" />
<flag number= "21" flag name="HttpSubStatus" value="2097152" />
E.G。 我们希望打开UserName,ServerIP,ServerPort和Host。 这要求我们添加8 + 64 + 32768 + 1048576 = 1081416
因此命令是:
Set-ItemProperty "IIS:\Sites\$siteName" -name LogFile.logExtFileFlags -value 1081416
答案 1 :(得分:0)
经过一番搜索后,我找到了自己解决方案的基线: Set IIS Log Fields via PowerShell
Activate-LoggingField函数将网站名称和日志记录字段名称作为参数
它通过Get - WebConfigurationProperty cmdlet获取提供的网站的活动日志记录字段,并检查提供的日志记录字段是否存在。如果它不存在,它将尝试通过Set-WebConfigurationProperty cmdlet
添加它Import-Module Webadministration
Function Activate-LoggingField
{
param([Parameter(Mandatory=$true)][string]$websiteName,
[Parameter(Mandatory=$true)][string]$loggingField)
$loggingFilter = "/system.applicationHost/sites/site[@name=`"$websiteName`"]/LogFile"
$currentLoggingFields = Get-WebConfigurationProperty -Filter $loggingFilter -Name LogExtFileFlags
if ($currentLoggingFields -notmatch $loggingField)
{
$newLoggingFields = "$currentLoggingFields,$loggingField"
Set-WebConfigurationProperty -Filter $loggingFilter -Name LogExtFileFlags -Value $newLoggingFields
}
}
Activate-LoggingField -websiteName "MySite" -loggingField "ClientIP"