IIS 7.5 及以后版本设置ODBC日志

2022-3-26 15:16:58 [大杂烩 - PC与手机]

IIS日志中,使用ODBC,将访问日志保持在数据库中,方便及时统计分析。比如访问量大的页面、同一IP大量请求疑似采集等。

在IIS7.0以前,IIS管理器中是有配置ODBC日志的。在WINDOWS2008R2以后,IIS7.5的管理器中并没有将日志格式设置为ODBC的选项。要设置成ODBC格式的日志,必须手工操作。

一、启用ODBClogging

IIS的默认安装是没有ODBClogging的,要使用得先安装。

步骤为:

1.管理工具中打开服务器管理器,或控制面板——程序和功能——打开Windows服务和功能

2.左侧点击角色,选择WEB服务器(IIS)

3.在WEB服务器的界面中,找到角色服务,点添加角色服务

4.在选择角色服务中,可以找到OBDC日志记录,打上V,点安装


二、 建立数据源

1.按照IISLOG的格式建立数据库和保存日志的表(在系统的inetsrv文件夹下提供了建立表的SQL 代码),并设置好登录用户和密码。

2.在控制面板=>管理工具=>数据源 (ODBC)

如果是32位的ACCESS数据库,注意要选32位数据源,

数据源 (ODBC) 32bit=>%SystemRoot%\SysWOW64\odbcad32.exe 
数据源 (ODBC) 64bit=>%SystemRoot%\system32\odbcad32.exe 

3.建立系统DSN, 名称为myiislog,选择数据库,填入登录信息


三、 在IIS管理器中对 HttpLoggingModule 解除锁定

1.IIS管理器中, 点击此服务器,右侧 IIS区域中,点 模块

2.在模块中找到HttpLoggingModule,点右键,选择解除锁定


四、执行以下命令

将以下内容保存为BAT 文件,点右键,以管理员身份运行。
c:\windows\system32\inetsrv\appcmd.exe set config "m.shijuan" -section:system.webServer/odbcLogging /dataSource:"myiislog" /commit:apphost
c:\windows\system32\inetsrv\appcmd.exe set config "m.shijuan" -section:system.webServer/odbcLogging /tableName:"myiisLog" /commit:apphost
 c:\windows\system32\inetsrv\appcmd.exe set config "m.shijuan" -section:system.webServer/odbcLogging /userName:"iislog" /commit:apphost
c:\windows\system32\inetsrv\appcmd.exe set config "m.shijuan" -section:system.webServer/odbcLogging /password:"123456" /commit:apphost

c:\windows\system32\inetsrv\appcmd.exe set sites "m.shijuan" -logFile.logFormat:"Custom" /commit:apphost
c:\windows\system32\inetsrv\appcmd.exe set sites "m.shijuan" -logFile.customLogPluginClsid:"{FF16065B-DE82-11CF-BC0A-00AA006111E0}" /commit:apphost

五、重启 IIS

IIS重启后,访问网站,会发现在建立 的表中有了访问记录。


注意,有些网站在配置时考虑为旧的32位程序兼容,在IIS的应用程序池 高级设置中允许 32位程序, 这样会导致日志出错,在指定的 DSN 中驱动程序和应用程序之间的体系结构不匹配。

要解决这个错误, 要在应用程序池的高级属性里去掉32程序的支持。


(这是N年前的笔记,整理一下,老旧服务器配置时用得上。)