自定义日志记录模块

IIS 支持自定义日志记录模块或组件对象模型 (COM) 对象,它们用于实现 ILogPluginILogPluginEx 接口。开发人员和系统管理员在创建各自的日志文件格式或处理日志数据时实现自定义日志记录模块。当在 LogPluginClsid 配置数据库属性中指定了该 COM 对象的全局唯一标识符 (GUID) 时,IIS 会为自定义日志记录模块创建实例并使用它的方法来记录项目。

注意 注意 当加载自定义日志记录模块时,IIS 将禁用内核模式缓存。因此,实现自定义日志记录模块可能会降低服务器的总体性能。

自定义日志记录模块与 LogInfo 对象一起使用,该对象是 IIS 实例化的用于实现 ILogInformation 接口的 COM 对象。ILogInformation 接口是用于日志信息的占位符。自定义日志记录模块从 ILogInformation 接口收集信息,然后将该信息写入日志中。

MSDN 网站 提供了最新版本的 IIS 软件开发工具包 (SDK),其中包含 IIS 日志记录参考和 ILogPluginILogPluginExILLEGIBILITY 接口的方法说明。请在 MSDN 网站上搜索“ILogPlugin interface”(ILogPlugin 接口)。

在 IIS 6.0 中,当向 LogFiles 目录中写入日志数据时,内核模式 HTTP 监听程序 HTTP.sys 使用 LocalSystem 和 LocalSystem 帐户。但是,自定义日志记录模块使用它们在其中运行的应用程序池上的帐户 — 在默认情况下为 NetworkService。因此,在写入到默认的 LogFiles 目录时,自定义日志记录模块可能会引起写入问题或错误。您可以通过让自定义日志记录模块写入到其他目录来纠正该问题。

如果选择让自定义日志记录模块向其他目录写入信息,请确保为新目录设置了正确的访问控制列表 (ACL)。应当考虑赋予 IIS_WPG 组写入权限。IIS_WPG 组是由 IIS 6.0 提供的用户组。IIS_WPG 组提供了 IIS 所需的一组最低权限,并提供一种不必对身份手动指定权限即可使用该身份帐户的特定用户的方便方法。如果帐户不在 IIS_WPG 组中且不具备相应的权限,则工作进程将无法启动。有关访问控制列表的详细信息,请参阅访问控制

一旦创建了自定义日志记录模块,就可将该日志格式添加到 IIS 管理器中的“活动日志格式”列表中。要将该自定义格式添加到活动日志格式列表中,必须用 adsutil.vbs 管理工具脚本编辑配置数据库。

要点 要点 为了运行脚本和可执行文件,您必须是本地计算机上 Administrators 组的成员,或者必须已经被委派相应的权限。作为安全性的最佳操作,请使用不属于 Administrators 组的帐户登录计算机,然后使用运行方式命令以管理员身份运行脚本或可执行文件。在命令提示符下,键入 runas /user:administrative_accountname "script or executable command"

将自定义日志记录模块添加到 IIS 管理器中的“活动日志格式”列表中

  1. 在配置数据库中的 LocalDrive:/Logging 下,创建一个与日志记录模块的好记名称(例如,Log Module X)同名的项。
  2. C:\Inetpub\AdminScripts>cscript adsutil.vbs enum "/Logging"
    KeyType                         : (STRING) "IIsLogModules"
    [/Logging/Custom Logging]
    [/Logging/Microsoft IIS Log File Format]
    [/Logging/NCSA Common Log File Format]
    [/Logging/ODBC Logging]
    [/Logging/W3C Extended Log File Format]
    [/Logging/Log Module X]
    
  3. 在“LocalDrive:/Logging/New Log Format”项中创建一个“KeyType”值,其值为 STRING "IIsLogModule"。
  4. C:\Inetpub\AdminScripts>cscript adsutil.vbs enum "/Logging/Log Module X"
    KeyType                         : (STRING) "IIsLogModule"
    
  5. 在“LocalDrive:/Logging/Log Module X”项中创建一个“LogModuleId”值,其值为 STRING "{cls_id of Log Module X COM object}"。
  6. C:\Inetpub\AdminScripts>cscript adsutil.vbs enum "/Logging/Log Module X"
    KeyType                         : (STRING) "IIsLogModule"
    LogModuleId                     : (STRING) "{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
    
  7. 在“LocalDrive:/Logging/Log Module X”项中创建一个“LogModuleUiId”值,其值为 STRING "{cls_id of Log Module X UI COM object}"。
  8. C:\Inetpub\AdminScripts>cscript adsutil.vbs enum "/Logging/Log Module X"
    KeyType                         : (STRING) "IIsLogModule"
    LogModuleId                     : (STRING) "{FF16065B-DE82-11CF-BC0A-00AA006111E0}"
    LogModuleUiId                   : (STRING) "{31DCAB86-BB3E-11d0-9299-00C04FB6678B}"
    
  9. 将日志记录模块的好记名称添加到 /W3SVC/Info/LogModuleList 属性(与已有的属性用逗号分隔)中。
  10. C:\Inetpub\AdminScripts>cscript adsutil.vbs get "/W3SVC/Info/LogModuleList"
    LogModuleList                   : (STRING) "NCSA Common Log File Format,
    Microsoft IIS Log File Format,W3C Extended Log File Format,
    ODBC Logging,Log Module X"
    
相关主题

© 1997-2003 Microsoft Corporation。保留所有权利