有時後我們會需要修改 IIS 中 W3C 擴充紀錄檔案格式 的紀錄內容,特別是「擴充紀錄選項」設定,因為 IIS 預設勾選的欄位很少,所以較無法分析出有用的資訊,所以通常每次安裝好 IIS 之後我都會修改這裡的欄位(如下圖示),最近為了替客戶修改「一群」主機,所以寫了個簡易的批次檔可透過 Adsutil.vbs 管理指令碼 修改特定網站的「擴充紀錄選項」的設定。
指令碼如下(這是個批次檔,你可以複製起來儲存到 SetLogExtFile.bat 以方便使用):
@ECHO OFF
IF [%1] == [/?] GOTO _help
IF [%1] == [] GOTO _help
IF [%2] == [] GOTO _help
SET ServerName=%1
SET SiteID=%2
ECHO Configuring Server [%ServerName%] on SiteID [%SiteID%]'s LogExtFile Flags ...
ECHO.
SET AdsUtil=C:\Inetpub\AdminScripts\adsutil.vbs
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileDate True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileTime True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileClientIp True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUserName True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileSiteName True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileComputerName True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileServerIp True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileMethod True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUriStem True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUriQuery True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHttpStatus True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileWin32Status True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileBytesSent True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileBytesRecv True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileTimeTaken True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileServerPort True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUserAgent True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileReferer True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileProtocolVersion True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHttpSubStatus True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHost False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileCookie False
ECHO.
ECHO done.
pause
GOTO _exit
:_help
ECHO IIS W3C LogExt 設定程式
ECHO.
ECHO SetLogExtFile.bat ServerName SiteID
ECHO.
ECHO 使用範例:
ECHO SetLogExtFile.bat Web1 178978434
ECHO.
GOTO _exit
:_exit
若要使用我這支程式,可以指定「主機名稱」與「網站ID」即可,例如:
SetLogExtFile.bat Web1 178978434
若你不知道什麼是「網站ID」的話,可以開啟 網際網路資訊服務 (IIS) 管理員 後,點選 網站 節點,在右側選單即可看見 識別元 欄位,這個欄位就是我所謂的「網站ID」。
如過你要設定 擴充紀錄選項 跟我不一樣的話,可以自行修改批次檔的內容,我想這幾行應該很容易理解。
一個比較常用的例子是我在 在 Windows 主機設定 AWStats 流量分析軟體 文章中的步驟 3.1 修正 Log 格式這部分,就可修改批次檔為如下的設定:
@ECHO OFF
IF [%1] == [/?] GOTO _help
IF [%1] == [] GOTO _help
IF [%2] == [] GOTO _help
SET ServerName=%1
SET SiteID=%2
ECHO Configuring Server [%ServerName%] on SiteID [%SiteID%]'s LogExtFile Flags ...
ECHO.
SET AdsUtil=C:\Inetpub\AdminScripts\adsutil.vbs
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileDate True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileTime True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileClientIp True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUserName True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileSiteName False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileComputerName False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileServerIp False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileMethod True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUriStem True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUriQuery True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHttpStatus True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileWin32Status False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileBytesSent True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileBytesRecv False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileTimeTaken False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileServerPort False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileUserAgent True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileReferer True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileProtocolVersion True
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHttpSubStatus False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileHost False
cscript /nologo %AdsUtil% -s:%ServerName% SET W3SVC/%SiteID%/LogExtFileCookie False
ECHO.
ECHO done.
pause
GOTO _exit
:_help
ECHO IIS W3C LogExt 設定程式
ECHO.
ECHO SetLogExtFile.bat ServerName SiteID
ECHO.
ECHO 使用範例:
ECHO SetLogExtFile.bat Web1 178978434
ECHO.
GOTO _exit
:_exit
備註:此指令碼僅適用於 Windows Server 2003 下的 IIS 6 喔。如果你的電腦是 Windows XP 的話,必須修正批次檔中執行 Adsutil.vbs 的參數。
相關連結