ASP.NET 支持语音列
日志分析器 2.2 和 ASP.NET
为了根据需要自定义此列,我们希望邀请你提交有关你感兴趣的主题以及你希望在将来的知识库文章和支持语音专栏中看到的问题的想法。 可以使用“询问”表单提交你的想法和反馈。 此列底部还有一个指向窗体的链接。
欢迎使用 ASP.NET 支持语音列。 我叫 Rahul Soni,我已经在 Microsoft 工作了大约两年了。 在本月的专栏中,我将讨论有关 Log Parser 2.2 的一些事实。 在进入特定方案之前,请花点时间介绍日志分析器工具。
关于
日志分析器是一个非常强大的通用工具,可提供对基于文本的数据(例如日志文件、XML 文件和 CSV 文件)以及 Microsoft Windows 操作系统上的关键数据源(如事件日志、注册表、文件系统和 Active Directory 目录服务)的通用查询访问。 请
单击此处下载该工具。 在此版本中,可以通过日志分析器工具非常轻松地分析以下文件:
IISW3C、NCSA、IIS、IISODBC、BIN、IISMSID、HTTPERR、URLSCAN、CSV、TSV、W3C、XML、EVT、ETW、NETMON、REG、ADS、TEXTLINE、TEXTWORD、FS 和 COM。我同意命令行界面不是很直观,一旦安装和运行该工具,你就会发现它。 但是该工具在直观感觉方面所缺乏的东西正在由该工具提供的文档进行修补。 我会在这里给出一个小建议:不要让命令行界面让你这么快地关闭。 此工具是极客工具包的必备工具,可帮助你很多,尤其是在你想要从性能角度进行故障排除时。
我不会讨论“如何”使用日志分析器工具,因为文档非常好,并且安装文件夹还包含包含大量示例的“Samples\Queries”文件夹。
因此,在完成日志分析器工具的推广后,让我回到我谈论的方案。
方案 1:分析特定文本的大型文本文件
问题的一个小背景
客户执行某些操作时遇到“拒绝访问”问题。 建议客户使用另一个名为
Filemon 的出色工具,并重现问题。 如果资源 ACL 存在问题,则 Filemon 工具将能够捕获错误。 现在,你要求客户向你发送保存的 Filemon 日志文件。 不幸的部分来了。 (Filemon.log) 但发现文件的大小很大, (Filemon 确实记录了大量数据!) 。 记事本看起来会挂起,在日志文件中查找“拒绝访问”行时会非常缓慢。 Microsoft Office Excel 将拒绝完全打开该文件。 现在怎么办?
答案:打开“日志分析器”命令窗口,并使用以下命令:
LOGPARSER“从 C:\Filemon.log 中选择文本,其中文本如'%Access Denied%''”-i:TEXTLINE -q:Off我们告诉日志分析器工具的是分析给定文件中的每一行 (文本) (C:\Filemon.log) 其中行包含“访问被拒绝”。 -i:TEXTLINE 命令行开关指定输入格式,-q:Off 命令行开关指示其详细 (-q[:ON|OFF]:quiet mode;) 。 如果打开 -q 命令行开关,下面输出中显示的统计信息和字段名称 (文本) 将不存在。
示例输出
Text7447 下午 1:49:24 explorer.exe:1200 DIRECTORY C:\访问被拒绝的 StatisticsElements 已处理:640444
元素输出:1
执行时间:12.75 秒
如果查询返回的记录数大于 10,如何避免多次按 Enter?
答案:在查询中使用 -rtp:-1 参数!
如果要将输出重定向到文件中,则这是一个必需的参数。 此外,在写入 STDOUT 时,输出记录以批形式显示,这些批由多个行组成,这些行等于为此参数指定的值。 显示一批行后,它将提示用户按某个键以显示下一批行。 为此参数指定“-1”将完全禁用批处理!
使用查询文件
以更简洁的方式实现相同结果的另一种方法是创建查询文件。 这样,即可轻松调整查询文件,并从日志分析器工具的命令行运行它。 除此之外,还可以根据自己的喜好轻松创建 GUI。 GUI 加载保存的 SQL 查询,并使用日志分析器工具运行查询。
如果要 (实现与从 SQL 查询) 方案 1 中相同的效果,可以提供以下命令:
LOGPARSER -i:TEXTLINE file:C:\LPQ\SearchAnyTextfile.sql -q:offC:\LPQ\SearchAnyTextFile.sql 包含以下信息:
注释 在 C:\ 中创建文件夹 LPQ文件夹,用于使用此列中显示的示例。
Select Text as LineFromFile
FROM C:\Filemon.log
WHERE Text
LIKE '%Access Denied%'
如果你注意到,查询现在看起来更简洁,而且更有意义。 这样,还可以创建更复杂和更大的查询,并且所有内容都将适合你的命令行,因为你使用的是 。SQL 文件而不是整个查询。 在命令行上不能容纳超过 260 个字符!
为了保持使用查询文件的好处,我将在以下方案中使用此方法。 我的所有查询都保存在 C:\LPQ 中,扩展名为 .sql, (你可以使用自己的) 。
方案 2:从特定文件夹(包括其子文件夹)查找 10 个最大文件
问题的一个小背景
你有一个文件夹,其中有很多子文件夹和文件。 你想要找出该文件夹中前 10 个最大的文件,包括其子文件夹。
我知道,对于特定文件夹,只需 在“视图 ”菜单上更改视图 (,在 Windows 资源管理器中单击“ 详细信息 ”) ,然后按大小对视图进行排序。 但此处的问题是,你还需要考虑子文件夹的内容。
答案:打开“日志分析器”工具命令窗口,并使用以下命令:
LOGPARSER -i:FS file:C:\LPQ\Top10Files.sql -q:off -Recurse:-1Top10Files.sql 包含以下内容:
SELECT TOP 10
Path,
Name,
Size,
Attributes
FROM 'C:\Program Files\Microsoft Office\*.*'
ORDER BY Size DESC
此处 -i:FS 表示我们正在查询文件系统。 可以在文档中查看 FS 输入格式字段的完整列表,并相应地构建查询框架。
-Recurse:-1 表示我们想要包含所有子文件夹。 如果不希望所有子文件夹或想要限制递归,请使用 0、1、2 等。数字表示分析程序将进入的深度。 0 表示不递归,2 表示分析器重复到深度 2,等等。
示例输出
Path Name Size Attributes
------------------------------------------------------------ ------------ -------- ----------
C:\Program Files\Microsoft Office\Office10\WINWORD.EXE WINWORD.EXE 10738448 -A--R----
C:\Program Files\Microsoft Office\Office10\EXCEL.EXE EXCEL.EXE 9358096 -A--R----
C:\Program Files\Microsoft Office\Office10\OUTLLIB.DLL OUTLLIB.DLL 6326984 -A-------
C:\Program Files\Microsoft Office\Office10\POWERPNT.EXE POWERPNT.EXE 6093584 -A--R----
C:\Program Files\Microsoft Office\Office10\MSOWC.DLL MSOWC.DLL 3041880 -A-------
C:\Program Files\Microsoft Office\Office10\CLIPPIT.ACS CLIPPIT.ACS 2904417 -A-------
C:\Program Files\Microsoft Office\Office10\GRAPH.EXE GRAPH.EXE 2144824 -A-------
C:\Program Files\Microsoft Office\Office10\1033\OUTLLIBR.DLL OUTLLIBR.DLL 1977032 -A-------
C:\Program Files\Microsoft Office\Office10\1033\XLMAIN10.CHM XLMAIN10.CHM 1646072 -A-------
C:\Program Files\Microsoft Office\Office10\MSOWCW.DLL MSOWCW.DLL 1200177 -A-------
StatisticsElement 已处理:1000
元素输出:10
执行时间:0.42 秒
方案 3:查找网站中最慢的 20 个页面
问题的一个小背景
你使用的是 Microsoft Internet Information Services (IIS) 6,有几个 ASP.NET 网站,并且对性能并不满意。 你想要调整服务器,并了解从 Web 服务器提供花费最长时间的前 20 个页面。 这与你确定耗时最高的页面、修复它和问题解决并不一样。 遗憾的是,没有用于解决性能问题的灵丹妙药。 至少应该有一种方法开始。 正确?
答案:打开“日志分析器”命令窗口,并使用以下命令:
LOGPARSER -i:IISW3C file:C:\LPQ\Slowest20FilesInIIS.sql -o:DataGrid -q:offSlowest20FilesInIIS.sql 包含以下示例代码。
Select Top 20
LogRow as [Line Number],
date as [Date],
time as [Time],
c-ip as [Client-IP],
s-ip as [Server IP],
s-port as [Server Port],
cs-method as [Request Verb],
cs-uri-stem as [Request URI],
sc-bytes as [Bytes sent],
sc-status as [Status],
sc-substatus as [Sub-status],
sc-win32-status as [Win 32 Status],
time-taken as [Time Taken]
From
C:\ex060813.log
Order by time-taken desc
此处,-i:IISW3C 表示我们正在查询 IIS W3C 日志。 可以在文档中查看 IISW3C 输入格式字段的完整列表,并相应地构建查询框架。
-o:DataGrid 表示输出应显示在数据网格中,如下所示:
注意 若要使用此查询,应使用 IISW3C 日志记录,并且必须启用高级日志记录属性。 (打开网站属性,单击“ 网站 ”选项卡,单击以选择“ 启用日志记录”,然后将“活动日志格式”设置为 W3C 扩展日志文件格式。 单击 “属性”,单击“
高级 ”选项卡,然后单击以选择所有选项。)
方案 4:查找网站中最常用的 20 个 .aspx 页面
问题的一个小背景
你使用的是 IIS 6,有几个 ASP.NET 网站,并且想要了解最常用的 .aspx 文件,以便优化这些页面的性能,最终会对整个网站/服务器带来好处。 最好花时间调整最常用的页面,而不是谨慎使用的页面。 (尽管此规则可能存在例外情况。 假设少用页是一个非常糟糕的页面,导致 CPU 使用率过高!) 现在,如果你发现某个页面需要很长时间才能 (方案 3) 并且该页面是最常用的页面之一,则应始终确认页面在压力下表现良好。
答案:打开“日志分析器”工具命令窗口,并使用以下命令:
LOGPARSER -i:IISW3C file:C:\LPQ\Popular20FilesInIIS.sql -chartType:Bar3D -groupSize:640x480 -view:onPopular20FilesInIIS.sql 包含以下示例代码。
Select Top 20
cs-uri-stem as [Request URI],
COUNT(*) AS Hits
INTO MyChart.gif
FROM C:\ex060813.log
Group by cs-uri-stem ORDER BY Hits DESC
在这种情况下,-chartType:Bar3D 告知日志分析器工具要准备哪种类型的图表。 -groupSize 参数指定目标图像的宽度和高度(以像素为单位)。 可用图表类型的集取决于本地计算机上安装的 Microsoft Office Web 组件的版本。
输出如下所示:
如前所述,日志分析器工具在分析各种日志中的数据方面可能有多种方法非常有用。 只有创造力是这里的极限! 数据几乎有无限的方式可以反映你更好的画面,而且你可以采取一些措施。 我们触摸的只是冰山一角! 还可以使用高级语言(如 Microsoft Visual C#、Microsoft Visual Basic .NET 等)使用日志分析器工具的强大功能创建有用的程序。 请查看下面的“资源”部分。
资源
-
日志分析器 2.2 中的新增功能
http://www.microsoft.com/technet/scriptcenter/tools/logparser/lpfeatures.mspx
-
日志分析器 2.2 的工作原理
-
Microsoft Log Parser Toolkit - 有关日志分析器的书籍!
http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx
我想讨论日志分析器工具的更多方案,并且我在博客中创建了一个新部分,仅针对日志分析器工具。 如果对想要共享的方案或日志分析器工具查询有任何建议,请通过
rahulso@microsoft.com 邮寄给我,我会在以下网站上尽早发布:
https://learn.microsoft.com/archive/blogs/rahulso/
和往常一样,可以使用“询问”表单,随时提交有关将来的列或知识库中要处理的主题的想法。
本文讨论的第三方产品由独立于 Microsoft 的公司制造。 对于这些产品的性能或可靠性,Microsoft 不作任何暗示保证或其他形式的保证。