JavaScript日志解析器项目:坏主意?

JavaScript日志解析器项目:坏主意?,javascript,programming-languages,logparser,Javascript,Programming Languages,Logparser,有许多日志文件,我必须每天审查我的工作。对于这些日志文件已经有好几个好的解析器,但我还没有找到我想要的。那么,谁能比你更适合你呢 我之所以使用JavaScript(除了我已经知道的事实之外),是因为它是可移植的(不需要安装任何东西),但同时可以跨平台访问。在我投入太多时间之前,这是实现我目标的糟糕方法吗 输入将被输入到一个文本文件中,由[x]分隔,值将被放入一个数组中,以使访问这些值比提取静态内容更快 在将值放入数组之前,将处理任何特殊格式(数字、日期等),以防止函数每次使用时重复此步骤 这些日

有许多日志文件,我必须每天审查我的工作。对于这些日志文件已经有好几个好的解析器,但我还没有找到我想要的。那么,谁能比你更适合你呢

我之所以使用JavaScript(除了我已经知道的事实之外),是因为它是可移植的(不需要安装任何东西),但同时可以跨平台访问。在我投入太多时间之前,这是实现我目标的糟糕方法吗

  • 输入将被输入到一个文本文件中,由[x]分隔,值将被放入一个数组中,以使访问这些值比提取静态内容更快
  • 在将值放入数组之前,将处理任何特殊格式(数字、日期等),以防止函数每次使用时重复此步骤
  • 这些日志可能包含100k+行,这对于浏览器来说是一个很大的问题。然而,每一行并不包含大量的信息
  • 我已经写了一些,但即使有10000行,它也开始运行缓慢,我不知道这是因为我效率不够,还是无法有效地完成。我认为这是因为所有的数据都在一个巨大的表中。我可能会更好的分页,但这是不可取的
    问题1:有什么我没有提到的,我应该考虑吗? 问题2:你能推荐一个更好的选择吗?
    问题3:(有点离题,所以可以忽略)。我不想复制/粘贴输入,而是想“打开”日志文件,但据我所知,JavaScript无法这样做(出于安全原因)。是否可以使用input=“file”完成此操作,而不需要实际上传到服务器?我不知道SSJS是如何工作的,但我似乎低估了JavaScript的局限性


    我知道这有点含糊不清,但我想让你们都不必读一本书来回答我的问题。让我知道我是否应该包括额外的细节。谢谢

    用粗体回答你的首要问题:不,这不是一个糟糕的主意

    如果JS是您知道的唯一语言,那么您希望避免设置任何依赖项,并且希望保持平台独立性。。。JavaScript似乎非常适合您的特定情况

    作为更一般的规则,我永远不会使用JS作为编写桌面应用程序的语言。尤其不适合执行日志解析之类的任务。还有许多其他语言更适合这种类型的问题,如Python、Scala、VB等。我之所以提到Python和Scala,是因为它们类似于脚本的行为和最低的设置要求。Python还有非常类似于JS的语法,因此它可能比其他语言更容易学习。如果您有Visual Studio许可证,VB(或任何.NET语言)也可以使用,因为如果GUI builder更适合您的需要,它很容易使用


    我建议的方法是:使用现有的框架。有成百上千的日志解析器,它们处理各种用例和不同格式的日志,您应该能够找到接近您需要的内容。要找到一个有效的日志解析器,可能需要比谷歌的“日志解析器”多一点努力。如果你找不到一个适合你的需要的,并且你愿意花时间做你自己的,那么你应该用这段时间来帮助现有的开源软件。在第十次尝试重新发明轮子之前,应始终考虑扩展现有代码库。

    用粗体回答您的首要问题:不,这不是一个糟糕的想法

    如果JS是您知道的唯一语言,那么您希望避免设置任何依赖项,并且希望保持平台独立性。。。JavaScript似乎非常适合您的特定情况

    作为更一般的规则,我永远不会使用JS作为编写桌面应用程序的语言。尤其不适合执行日志解析之类的任务。还有许多其他语言更适合这种类型的问题,如Python、Scala、VB等。我之所以提到Python和Scala,是因为它们类似于脚本的行为和最低的设置要求。Python还有非常类似于JS的语法,因此它可能比其他语言更容易学习。如果您有Visual Studio许可证,VB(或任何.NET语言)也可以使用,因为如果GUI builder更适合您的需要,它很容易使用

    我建议的方法是:使用现有的框架。有成百上千的日志解析器,它们处理各种用例和不同格式的日志,您应该能够找到接近您需要的内容。要找到一个有效的日志解析器,可能需要比谷歌的“日志解析器”多一点努力。如果你找不到一个适合你的需要的,并且你愿意花时间做你自己的,那么你应该用这段时间来帮助现有的开源软件。在第十次尝试重新发明轮子之前,应该始终考虑扩展现有代码库。

    我认为JavaScript是一个“不错”的选择。使用脚本语言解析日志文件供个人使用是一个非常明智的决定

    但是,我不会为此使用浏览器。Web浏览器对javascript的运行时间、允许运行的指令数或两者都有限制。如果超过这些限制,您将得到如下结果:

    由于您将处理大量数据,我怀疑您迟早会遇到这种情况。这可以通过巧妙地使用setTimeout来避免,也可以通过web workers来避免,但这会增加项目的复杂性。这可能不是你想要的

    请注意,JavaScript也可以在浏览器之外运行。例如,Windows