什么'';在Java中解析以下日志项的最佳方法是什么?

什么'';在Java中解析以下日志项的最佳方法是什么?,java,parsing,logging,Java,Parsing,Logging,我正在做一项分析日志文件的任务。在Java中解析以下日志字符串的最佳方法是什么 EMPLOYER : NAME : Company ID : 23 TYPE : Academy FOUNDED : 2012-01-05 11:01:18.658 CATEGORY : College EMPLOYEE : NAME

我正在做一项分析日志文件的任务。在Java中解析以下日志字符串的最佳方法是什么

    EMPLOYER  :   NAME      : Company          ID : 23                   TYPE     : Academy
                 FOUNDED    : 2012-01-05 11:01:18.658                    CATEGORY : College
    EMPLOYEE  :   NAME      :  John                                      TIN      : 123456
                 GENDER     :  Male                                      STATUS   : Prob
    COMMENT   : Data sent to 192.168.0.1:8088
    USER DATA : Any string.
我特别关注关键字“雇主”和“雇员”(我不需要)以及出现在“已建立”和“评论”字段中的冒号(如果我将冒号用作分隔符的话)


谢谢

对于这样的事情,没有最好的办法。它显然是一种特殊格式,没有系统的元结构(例如与XML形成对比…)

你可以试试正则表达式,但我担心它们太复杂了

您可以使用解析器生成器,但这可能超出了您当前的能力。(否则你自己也会想到的。)

相反,我建议使用Java的
Scanner
类实现解析器。上下文相关定界符的问题可以通过以下方法解决:根据您下一步的期望更改定界符正则表达式,或者使用
Scanner.nextLine()
获取行的其余部分,而不考虑定界符



像这样的问题的一个问题是,您没有一个定义良好的格式。你只是给我们展示了一个简单的例子。此示例可能是典型的,但它不处理边缘情况。(您已经确定了其中至少一个。)这也增加了一种可能性,即如果不将“业务知识”嵌入解析器,就无法解析日志文件条目;e、 g.日期将始终采用特定格式,或者公司名称从不包含冒号。如果您实际上不知道这些规则是什么(例如,因为它们没有在任何地方正确指定),那么您的解析器将是脆弱的。

需要更多详细信息。例如,您目前是否有任何正在使用的技术?日志是否包含其他文本?涉及多少数据?数据看起来像固定格式/字符位置日志,是这样吗?需要提取什么?有没有和你描述的一模一样的重复部分?嗨。我对键值对感兴趣,例如Name=Company、ID=23、Type=Academy等等。这是一个日志条目的示例,文本文件中包含许多这样的日志条目。我将使用我正在构建的Java应用程序解析这些日志文件。是的,这是一个固定格式/字符定位日志。谢谢我不想成为一个混蛋,但是人们在发布此类问题之前,是否考虑过如何自己解决它?。。。