我有一个有趣的问题,并会感谢您的想法的最佳解决方案。 我需要解析一组日志。日志由多线程程序生成,单个进程周期生成多行日志。如何解析由多个线程写入的日志?
解析这些日志时,我需要从每个进程中提取特定的信息 - 当然这些信息是跨越多行的(我想将这些数据压缩成一行)。由于应用程序是多线程的,因此属于某个进程的行块可以作为其他进程碎片化,同时写入同一个日志文件。
幸运的是,每一行都给出了一个进程ID,所以我能够区分哪些日志属于哪个进程。
现在,已经有几个解析器都扩展了相同的类,但被设计为从单个线程应用程序(没有碎片 - 从原始系统)读取日志,并在超类中使用readLine()方法。这些解析器将继续读取行,直到所有正则表达式匹配一行行(即在单个处理周期中写入的行)为止。
那么,我可以用超级类做些什么,以便它可以管理碎片日志,并确保对现有已实现的解析器的更改最小化?