如何在事件查看器中按应用程序分离 IIS 事件日志

如何在事件查看器中按应用程序分离 IIS 事件日志

首先,我想说一下,我对 IIS 非常陌生,所以对于任何明显的问题我深表歉意。

我围绕这个主题做了一些研究,但结果尚无定论。

这是我的情况;

我当前在远程服务器上运行 IIS 6,该服务器托管大约 20 个站点。

我发现我可以使用事件查看器浏览不同 Web 应用程序上发生的错误。

我目前的问题是,似乎没有办法根据“每个应用程序”过滤掉事件日志,而是根据发生的时间随机出现。还有 ASP.NET web 事件、IIS-W3SVC-WP 警告等的混合。

要确定哪个警告分配给哪个应用程序,我必须右键单击错误,转到“事件属性”,然后转到“应用程序路径”,其中将包含我的“HotelBookingSystem”的路径。此应用程序路径将是“D:inetpub\wwwroot\HotelBookingSystem”。

我的问题是,有没有办法按应用程序对事件日志进行排序?我理想情况下希望按“应用程序路径”过滤所有结果。

我已经安装了 Microsoft 的 Log Parser Studios,因此相信可能有一种方法可以使用它来运行查询,但是我对 SQL 的了解还不足以尝试创建这样的查询。

任何帮助都将非常感激。

答案1

我已经设法解决了这个问题,但这是一个相当冗长的方法。

在“事件查看器”上,我右键单击“应用程序”窗口日志并将整个日志保存到 .txt 文件中。

我将这个.txt 文件从远程服务器复制到本地机器上。

我在我的计算机上安装了 Log Parser 2.2(可以下载这里

我通过在本地计算机上打开命令提示符并导航到安装它的位置(例如 Program Files (x86) > Log Parser 2.2 >)来访问 Log Parser。

继续,我输入以下命令来搜索字符串(在我的情况下是应用程序名称)以及日期,以便我可以将搜索范围缩小到特定日期。我还在数据网格中打印了结果;

logParser.exe "select * from **C:\NAME_OF_FILE.txt** WHERE text LIKE '%10/02/2015%' AND text LIKE '**YOUR_STRING**%'" -o:datagrid

您还可以选择将结果放入输出文件中,在我的情况下是;

-o:CSV > C:\temp\Test.csv

这可能不是最好的方法,但对我来说却很有效。

答案2

  1. 尝试玩wevtutil(这是 Windows命令行实用程序管理事件)来查看是否可以提出合适的查询。

    https://technet.microsoft.com/en-us/magazine/dd310329.aspx

    以及查询命令的帮助屏幕:

    wevtutil qe /?

  2. 如果你更喜欢基于对话框的解决方案,请尝试XPath 查询在事件查看器上,如下所述:http://blog.backslasher.net/filtering-windows-event-log-using-xpath.html 但恐怕 Windows Event Log 仅支持 XPath 1.0 的子集。它仅包含 3 个函数:position、Band、timediff。

  3. 还有一些有趣的选项Get-WinEvent 电源外壳命令。

在您的(已编辑)问题中,您表示要使用描述字段的子字符串进行过滤。我认为使用内置过滤器无法实现这一点,我会使用命令wevtutil将所有相关事件转储到 XML 中,然后然后使用一些功能齐全的解析器进行过滤(可以是简单的字符串搜索,也可以是具有完整 XPath 功能的 XML 解析器)。

相关内容