【发布时间】:2008-11-07 17:18:26
【问题描述】:
我有一个有趣的问题,希望您能提出最佳解决方案。 我需要解析一组日志。日志由多线程程序产生,单个进程循环产生多行日志。
在解析这些日志时,我需要从每个进程中提取特定的信息 - 自然,这些信息跨越多行(我想将这些数据压缩成一行)。由于应用程序是多线程的,属于一个进程的行块可以像其他进程一样被碎片化,同时写入同一个日志文件。
幸运的是,每一行都提供了一个进程 ID,因此我能够区分哪些日志属于哪个进程。
现在,已经有几个解析器都扩展了同一个类,但被设计为从单线程应用程序读取日志(无碎片 - 来自原始系统)并在超类中使用 readLine() 方法。这些解析器将继续读取行,直到所有正则表达式都匹配到一行行(即在单个进程周期中写入的行)。
那么,我可以对超类做些什么,以便它可以管理碎片日志,并确保对现有实现的解析器的更改最小?
【问题讨论】:
标签: java regex multithreading inheritance parsing