2002 年底幫一個客戶作的平台中需要一個搜尋 IIS Log 的功能,當時能想到最好的方式就是將 IIS 的 Log 資訊轉到 SQL Server 中,需要的時候再連線到 SQL Server 進行搜尋的動作,於是有了這一個轉換程式。當然也能夠將此程式用來只作中介的轉換,可以另外發展一個 IIS 流量分析之類的程式,怎麼應用就看每個人的想法了…
要利用這個程式,只要把它抓下來,放在 c:\vbs 目錄,修改一下這幾行內容:
const C_DB_Host = “192.168.1.250”
const C_DB_User = “sa”
const C_DB_Pass = “dbpassword”
const C_DB_DATABASE = “IISLog”
const C_DB_Table = “logs”
const C_MoveTo = “c:\Bak”
分別為你的 DB 環境設定, 而 C_MoveTo 則是保存原始 IIS Log 檔的目錄位址。接著要在 SQL Server 建立 Table,底下為建立 Table 的 SQL Script, 用哪一個 DB 請自行決定:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[logs]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
drop table [dbo].[logs]
GO
CREATE TABLE [dbo].[logs] (
[sSN] [int] IDENTITY (1, 1) NOT NULL ,
[sBytesReceived] [char] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sBytesSent] [char] (10) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sClientIP] [char] (15) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sCookie] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sCustomFields] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sDateTime] [datetime] NULL ,
[sMethod] [char] (15) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sProtocolStatus] [int] NULL ,
[sProtocolVersion] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sReferer] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sServerIP] [char] (15) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sServerName] [char] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sServerPort] [int] NULL ,
[sServiceName] [char] (100) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sTimeTaken] [char] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sURIQuery] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sURIStem] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sUserAgent] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sUserName] [varchar] (255) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL ,
[sWin32Status] [char] (50) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL
) ON [PRIMARY]
GO
當 Table 建立好了之後,就可以在 DOS 模式下使用 cscript log_rotate.vbs 指令執行了。
Tips:
基本上這支程式應該設為 Schedule, 每天早上執行,設定 Schedule 的執行在 Win2000 下指令:
C:\WINNT\system32\cscript.exe C:\vbs\log_rotate.vbs
Enjoy~