代码之家  ›  专栏  ›  技术社区  ›  kitsune

尝试编写一个程序/库,比如logparser——它如何在内部工作?

  •  2
  • kitsune  · 技术社区  · 16 年前

    LogParser不是开源的,我需要这个功能来开发一个开源项目。

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

    你有什么能帮助我的链接吗?像logparser这样的程序怎么能这么快地工作?它如何处理内存限制?

    2 回复  |  直到 12 年前
        1
  •  2
  •   Skurmedel    16 年前

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

    例如,您可以一行一行地工作并解析每一行。对于实际的解析,您可以编写一个状态机,或者如果需求允许,使用regex。

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

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

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

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

        2
  •  0
  •   getsrirams    12 年前

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

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