尝试编写像LogParser这样的程序/库 - 它是如何在内部工作的?

时间:2009-04-17 15:42:47

标签: linq iis parsing logging logparser

LogParser不是开源的,我正在为我正在开发的开源项目提供此功能。

我想编写一个库,允许我查询大量(主要是IIS)日志文件,最好使用Linq。

你有任何可以帮助我的链接吗?像LogParser这样的程序如何运作如此之快?它如何处理内存限制?

2 个答案:

答案 0 :(得分:2)

它可能在读取日志时处理日志中的信息。这意味着它(库)不必分配大量内存来存储信息。它可以读取一个块,处理它并丢弃它。这是处理数据的常用且非常有效的方法。

例如,您可以逐行工作并解析每一行。对于实际解析,您可以编写状态机,或者如果需求允许,请使用正则表达式。

另一种方法是读取和解析数据的状态机。如果由于某种原因,日志条目跨越多行,则可能需要这样做。

一些与状态机相关的链接:

用C编写的非常简单状态机:http://snippets.dzone.com/posts/show/3793

很多与python相关的代码,但有些章节普遍适用:http://www.ibm.com/developerworks/library/l-python-state.html

答案 1 :(得分:0)

如果您的目标是使用LINQ查询IIS日志数据。然后我建议您将原始IIS日志数据移动到数据库并使用LINQ查询数据库。这篇博文可能有所帮助。

http://getsrirams.blogspot.in/2012/07/migrate-iislog-data-to-sqlce-4-database.html