记得十几年前,刚刚用Java实现了可以编写DSL解析日志的解析引擎后不久。同事突发奇想的有天问我,你能不能根据收集到的日志自动生成正则表达式,减轻编写日志解析DSL的工作量?我像看着一个傻子一样,打量了一下他,然后严辞拒绝了他。开什么玩笑,按近一段时间在项目中收集到的各类日志,几乎就没有一个长的一样的,人工解还解不出来呢,还自动化解析......
虽然,我几乎没让这个同事失望过,每每他用他活跃的大脑,给他自己和我出一些异想天开的主意时,我们都做到了,几乎没让他对自己和我失望过。比如十几年前,Java还不咋支持脚本语言时,他出主意让我写解析日志的DSL,我完成了,而且这是我的第一个Java程序,至今仍在使用。从此,我们结成了深厚的友谊,他不断给我提出更天马行空的主意,我们的友谊不断加深,直到他给我提出上面这个问题,我们友谊的深度保持在了这个层次,这一保持就是十几年。
就在一个月前,我突然又想起了这个想法,于是决定尝试去解决它。本打算18年底解决完问题,但因为只能用周末和平时晚上的时间,而这些时间有时还会有其它的事,最终在刚刚过去的1月3日,这个十几年前的想法被在有限范围内实现了。说有限,主要是因为我只测试过了十几个厂商的十几个安全产品的日志,只有一个厂商的日志解析不出来,但能给出近似的正则表达式,其余的都能成功解析。虽然是在有限范围内实现了自动化解析,但对于真正做解析工作的人来说,这应该还是有一定辅助作用的。在实现想法期间,我曾不断征询一个现在仍在从事日志解析相关工作的同事的看法,他很保守的给予了从一派胡言(跟我当年一样)到充满期待改变。
事实上,最重要的是,在十几年后我和我那位同事的友谊终于又可以加深一个层次了。
(本来想写一篇名为《日志表述与自动化解析》的技术性文章,结果没控制住,写到一小半,写的有点偏了,另外时间也晚了,不足以写完了,索性直接换个题目,抽时间再写技术性文章吧。但可以提前解释下为什么十几年前这个工作不好做,而十几年后能做了。主要原因当然不是我的技术水平提高了,而是产生日志的这帮家伙技术水平提高了,格式规范了不少,但还是不够规范,不然我应该全部能自动化解析了才是:)强烈呼吁,以后应该让技术水平更高的人来编写日志模块,毕竟我们已经进入了数据时代不是。)
领取专属 10元无门槛券
私享最新 技术干货