IIS の FTP ログを Flush する
Programmatically Flushing FTP Logs から VBScript のコードを利用する。
ftp.contoso.com
を実際の FTP サイト名にする- 作成した vbs を bat で呼び出せるようにし、管理者権限で実行する
pushd %~dp0 CScript.exe flush_ftp_logs.vbs
' Create a Writable Admin Manager object. Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager") adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST" ' Retrieve the sites collection. Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites","MACHINE/WEBROOT/APPHOST") Set sitesCollection = sitesSection.Collection ' Locate a specific site. siteElementPos = FindElement(sitesCollection,"site",Array("name","ftp.contoso.com")) If siteElementPos = -1 Then WScript.Echo "Element not found!" WScript.Quit End If ' Retrieve the site element. Set siteElement = sitesCollection.Item(siteElementPos) ' Create an object for the ftpServer element. Set ftpServerElement = siteElement.ChildElements.Item("ftpServer") ' Create an instance of the FlushLog method. Set FlushLog = ftpServerElement.Methods.Item("FlushLog").CreateInstance() ' Execute the method to flush the logs for the FTP site. FlushLog.Execute() ' Locate and return the index for a specific element in a collection. Function FindElement(collection, elementTagName, valuesToMatch) For i = 0 To CInt(collection.Count) - 1 Set element = collection.Item(i) If element.Name = elementTagName Then matches = True For iVal = 0 To UBound(valuesToMatch) Step 2 Set property = element.GetPropertyByName(valuesToMatch(iVal)) value = property.Value If Not IsNull(value) Then value = CStr(value) End If If Not value = CStr(valuesToMatch(iVal + 1)) Then matches = False Exit For End If Next If matches Then Exit For End If End If Next If matches Then FindElement = i Else FindElement = -1 End If End Function
なお HTTP ログは netsh http flush logbuffer
で flush できるようだ。
The logs for IIS FTP flush to disk every 6 minutes, and the HTTP logs every 1 minute (or 64kb).
Scott Forsyth's Blog - Flush IIS HTTP and FTP Logs to Disk