我有一个特殊要求,需要分析 IIS 网络日志并查看哪些用户(按用户名)访问过特别的页面子集。
谁能推荐一个好的分析工具来从日志中获取这些信息。
我查看过的 SmarterLogs 和 WebLog Expert 似乎要么列出访问过页面的用户数量(而不是具体是谁)。并且不提供选择您感兴趣的页面的功能...
谢谢,
抱歉再次提出这个问题。看来 IIS 日志中没有我想要的信息。我正在寻找 SharePoint 2003 文档库中每个用户对文档的请求。看来必须在 SharePoint 中启用此日志记录http://msdn.microsoft.com/en-us/library/dd583134(v=office.11).aspx
有人在 SP2003 中尝试过此操作吗?我还可以使用 Log Parser 吗?
答案1
我最喜欢的工具是 Log Parser(最初由 Peter 推荐),它的学习难度有点大,但用途非常广泛。Microsoft PFE 有一篇非常好的博客文章,介绍了使用 Log Parser 从 IIS 日志中获取数据的常见查询,其中一些查询可能会让您快速了解您想要提取的内容:http://blogs.technet.com/b/clinth/archive/2010/01/07/w3c-iis-log-analysis-using-log-parser.aspx
还有一个名为“Log Parser Lizard”的 Log Parser GUI 工具,它可以为您简化操作:http://www.lizard-labs.net/default.aspx
我还发现有人在 IIS.net 上发布了一个免费工具,可能值得一看,但我自己还没有尝试过:http://www.iis.net/community/default.aspx?tabid=34&i=1864&g=6
约翰
答案2
如果您熟悉编写 SQL 查询,则一种选择是将它们导入到 SQL Server 等数据库中。网上有这方面的记录,Microsoft 的做法是http://support.microsoft.com/kb/296085
另一种方法可能是使用诸如 Microsoft 的 Log Parser 之类的工具,但它使用类似的查询语言。 http://www.microsoft.com/download/en/details.aspx?id=24659
答案3
如果您可以将“页面子集”描述为正则表达式,则以下 ruby 应该可以解决问题(将日志输入到标准输入中):
users = []
$stdin.each_line { |l| next unless l =~ %r{interestingpagesregex}; u = l.split(/\s+/)[1]; users << u unless users.include? u }
puts users