多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > 利用LogParser把IIS日志導入數據庫中

利用LogParser把IIS日志導入數據庫中

來源:程序員人生   發布時間:2014-01-30 15:29:44 閱讀次數:2819次

一、概述

目前很多網站都用IIS日志來做統計,最近在公司把這個統計系統由一個物理機升級到三臺虛擬機上,建立計劃任務時,遇到一些問題,記錄下來過程,供后來人參考。

實現原理:

新建一個站點tj.elong.com,這個站點只有一張1像素的圖片tj.gif,當需要統計數據時,可以訪問這個圖片,把需要統計的數據當作參數(如:http://tj.elong.com/tj.gif?TableName=TjTest&OrderId=123456 ),每次訪問都會記錄在IIS日志中,編寫一個vbs利用LogParser小工具把IIS日志導入到數據庫中,然后再根據需要對數據進行分析處理。下面介紹的是Win7系統下,在本地建立這一套機制。

二、IIS設置

1、  IIS設置

A、 新建tj.elong.com站點,此站點包含一張1像素的圖片tj.gif。

B、 雙擊“功能視圖”中的 “日志”項,設置日志路徑。

2、  查看日志信息,確認日志記錄正常

A、設置hosts把tj.elong.com指向127.0.0.1

B、訪問http://tj.elong.com/tj.gif,并查看IIS日志信息,確認站點OK

三、安裝LogParser

可以從這里:http://www.wfuwu.com/down/html/logparser.html下載,雙擊安裝。

四、創建數據庫表并編寫SQL

1、  創建數據庫表

在本地建立數據庫Log_IIS,在數據庫中建立表Online_tj,創建表的SQL如下:

USE [Log_IIS]
GO

/****** Object: Table [dbo].[Online_tj] Script Date: 10/28/2011 17:08:28 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Online_tj]') AND type in (N'U'))
DROP TABLE [dbo].[Online_tj]
GO

USE [Log_IIS]
GO

/****** Object: Table [dbo].[Online_tj] Script Date: 10/28/2011 17:08:28 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[Online_tj](
[ID] [int] IDENTITY(1,1) NOT NULL,
[logtime] [datetime] NULL,
[s_ip] [varchar](255) NULL,
[cs_method] [varchar](255) NULL,
[cs_uri_stem] [varchar](255) NULL,
[cs_uri_query] [varchar](1024) NULL,
[s_port] [int] NULL,
[cs_username] [varchar](255) NULL,
[c_ip] [varchar](255) NULL,
[cs_User_Agent] [varchar](255) NULL,
[sc_status] [int] NULL,
[sc_substatus] [int] NULL,
[sc_win32_status] [int] NULL,
[time_taken] [int] NULL,
CONSTRAINT [PK__Online_tj__164452B1] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO


USE [Log_IIS]
/****** Object: Index [IX_Online_tj_CI_LCCC] Script Date: 10/28/2011 17:08:29 ******/
CREATE NONCLUSTERED INDEX [IX_Online_tj_CI_LCCC] ON [dbo].[Online_tj]
(
[cs_uri_stem] ASC,
[ID] ASC
)
INCLUDE ( [logtime],
[c_ip],
[cs_uri_query],
[cs_User_Agent]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


USE [Log_IIS]
/****** Object: Index [ix_Online_tj_logtime] Script Date: 10/28/2011 17:08:29 ******/
CREATE NONCLUSTERED INDEX [ix_Online_tj_logtime] ON [dbo].[Online_tj]
(
[logtime] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

2、  編寫logparser所用的插入數據的SQL

此SQL功能:從日志中選出數據,插入數據庫表中

/*

logparser file:tj_insert.sql?start=starttime+end=endtime+log=logfilename
input parameter:
start - starttime example:1:00:00 or 18:00:00
end - endtime example:1:09:59 or 18:59:59
log - logfilename example:ex10111601 or ex10111618

*/

Select TO_TIMESTAMP(date,time), TO_TIMESTAMP(date,time), s-ip, cs-method, cs-uri-stem, cs-uri-query, s-port, cs-username, c-ip,
cs(User-Agent), sc-status, sc-substatus, sc-win32-status, time-taken
INTO
Log_IIS.dbo.Online_tj
FROM
E: jIISLogW3SVC10\%log%.log
WHERE TO_LOCALTIME(Time) BETWEEN TO_TIMESTAMP('%start%','h:mm:ss') AND TO_TIMESTAMP('%end%','h:mm:ss')

五、編寫VBS

1、  編寫tj.vbs

功能:調用并執行上面寫的Sql語句

d = DateAdd("n", -6, Now())
strDate = Right(""&(100+Year(d)),2) & Right(""&(100+Month(d)),2) & Right(""&(100+Day(d)),2)

strHr = Hour(time())
strMin = Minute(time())
starttime = timeserial(strHr, strMin - 6, 0)
endtime = timeserial(strHr, strMin - 2, 59)

strHr = Right(""&(100+Hour(starttime)),2)
logfilename = "u_ex" & strDate
Set WshShell = Wscript.CreateObject("Wscript.Shell")

Wscript.Echo starttime &":"& endtime &":"&logfilename

strCMD = "LogParser file:E: j j_insert.sql?start=" & starttime &_
"+end=" & endtime & "+log=" & logfilename &_
" -iw:ON -i:iisw3c -o:sql -oConnString:""Driver={SQL Server};Server=(local);db=Log_IIS;uid=sa;pwd=123"""
Wscript.Echo strCMD
WshShell.run strCMD, 1, false

2、  測試VBS

測試這個vbs時,遇到了一個不大不小的問題,如果使用開始中LogParser 2.2運行vbs,則數據可以寫入數據庫,如果直接使用cmd運行,則數據不能寫入數據庫。

解決辦法有兩個:

A、 把cmd的路徑指向c:Program FilesLog Parser 2.2再運行vbs,如圖:

B、 在環境變量中加入c:Program FilesLog Parser 2.2即可

右擊我的電腦 - - 屬性 - - 更改設置 - - 高級 - - 環境變量 - - 系統變量中的“Path” - - 編輯 - - 在最后加上c:Program FilesLog Parser 2.2如下圖

六、建立計劃任務

控制面板 - - 系統和安全 - - 管理工具最后一項“計劃任務” - - 創建基本任務 - - 創建好了雙擊剛剛建立的計劃任務,在觸發器選項卡中選中任務,然后點擊下面的編輯,可以設置為每5分鐘運行一次。操作選項卡中,選中任務,點擊編輯,如果電腦的環境變量中設置了c:Program FilesLog Parser 2.2路徑的話,啟動程序中“起始于”就不用填了,如果沒有設置的話,起始于要填上c:Program FilesLog Parser 2.2。如下圖:

Windows 2003系統和Win7系統大同小異,部分功能沒有特別細致的介紹,有什么問題歡迎拍磚。

(文章來源:http://fuhongxue2011.cnblogs.com/ 作者:傅紅雪2011)

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产性生活视频 | 久久精品男人的天堂 | 自拍1页| 中文字幕在线国产 | 一本大道香蕉在线高清视频 | 自拍偷拍第3页 | 男人边吃奶边摸下面好爽视频 | 亚洲韩精品欧美一区二区三区 | 欧美成人免费观看国产 | 日韩欧美精品综合久久 | 亚洲精品视频免费观看 | 国产亚洲精品激情都市 | 久久88香港三级台湾三级中文 | 亚洲高清日韩精品第一区 | 黄色网址免费 | 国产亚洲精品中文带字幕21页 | 91亚洲精品一区二区自 | 欧美午夜三级 | 伊人91在线| 日韩欧美中国a v | 亚洲免费午夜视频 | 小说区亚洲区 | 午夜精品久久久久久久久 | 亚洲久久天堂 | 99久久久国产精品免费牛牛四川 | 欧美精品亚洲精品日韩专区va | 亚洲大成色www永久网 | 国产中文 | 国产uv1区二区三区 国产v | 免费激情视频网站 | 91精品久久久久久久久网影视 | 亚洲免费网站 | 日韩欧美国内 | 中文字幕第页 | 欧美一级久久久久久久大片动画 | 片免费观看网站视频 | 9191免费视频观看高清 | 国产99精品一区二区三区免费 | 伊人久久亚洲精品一区 | 日本理论免费高清在线视频 | 在线看片777av免费观看 |