一款日志文件提取的小软件


placeholder image
admin 发布于:2022-07-30 11:13:17
阅读:loading

基本介绍

对于日志文件的查看本人还是喜欢在Windows下打开查看,时而使用LogView软件,也有使用ultraedit和Nodepad++,总是感叹日志文件过大而导致的文件内容滚动查看和关键字搜索比较麻烦,又不喜欢在Linux下借助命令来查看,所以就写了这么一款小小的软件程序,同样的套路使用Swing编写,打包成jar,然后配合exe4j制作成一款exe的外壳,支持在有JDK的环境中直接双击exe打开,代码比较简单,文章结尾处给出源码下载,本篇文章主要介绍这款小软件的实现。

这款软件起名为《文件内容提取.exe》,主要是对日志文件(或其它有规则地文本文件)内容地提取,提供两种提取方式,分别是按“文章行内容前缀”匹配和按“文章内容行号”,对于这两种内容提取的实现也不相同,其中按文件行号提取则显得比较简单,这两种方式传递的参数略不相同,其中选择文件路径和文件编码是二者均需传递的,详细如下。

软件说明

======文件行内容前缀======

【参数说明】

1.开始前缀:匹配每行开始文本包含此文本(开始前缀)的匹配规则;

2.结束前缀:匹配每行开始文本包含此文本(结束前缀)的匹配规则;

3.结束限制:当结束匹配时限定当前行要匹配每行开始文本包含此文本的匹配规则;

4.选择文件:点击“浏览...”按钮选择原始待分拆的文件;或者使用“Ctrl + V”粘贴原始文件的路径;

5.文件编码:读取原始文件与生成文件时的文件编码,支持手工录入其它编码;

6.生成文件:当校验逻辑完毕后根据当前参数提取数据生成新文件;

7.生成文件命名:以原始文件为基准,拼接“_prefix_HHmmss”,如“hello.log”为“hello_prefix_102030.log”;

【校验规则】

1.开始前缀与结束前缀不能同时为空,若存在开始前缀不存在结束前缀表示查找到结尾;若存在结束前缀不存在开始前缀表示从开头查找到结束前缀的位置行;若同时存在结束限制时表示结束行必须要限制包含对应的文本,否则将继续往后查找;

2.选择文件不能为空;

3.选择文件必须存在,且只能是文件和有读取文件权限;

4.文件编码限制为有效的文件编码,如“GB2312、GB18030、ISO8859-1”等;

【生成规则】

1.当“开始前缀”与“结束前缀”同时存在时则同时限制,满足从开始到结束后的符合文本提取规则;

2.当仅有“开始前缀”时,只匹配符合每行开始内容符合“开始前缀”的部分;

3.当仅有“结束前缀”时,只匹配符合每行开始内容符合“结束前缀”符合的部分;

4.当存在“结束限制”找到的内容数据后将会验证结束行是否符合“结束规则”,如不满足将持续向后读取,否则校验“结束限制”的文本规则;

======文件内容行号======

【参数说明】

1.开始行号:按照文件行号的匹配规则,从“开始行号”的数值开始读取;

2.结束前缀:按照文件行号的匹配规则,从“结束行号”的数值开始读取;

3.选择文件:点击“浏览...”按钮选择原始待分拆的文件;或者使用“Ctrl + V”粘贴原始文件的路径;

4.文件编码:读取原始文件与生成文件时的文件编码,支持手工录入其它编码;

5.生成文件:当校验逻辑完毕后根据当前参数提取数据生成新文件;

6.生成文件命名:以原始文件为基准,拼接“_prefix_HHmmss”,如“hello.log”为“hello_line_102030.log”;

【校验规则】

1.开始行号与结束行号不能同时为0,若存在开始行号不存在结束行号表示查找到结尾;若存在结束行号不存在开始行号表示从开头查找到结束行号的位置行;

2.选择文件不能为空;

3.选择文件必须存在,且只能是文件和有读取文件权限;

4.文件编码限制为有效的文件编码,如“GB2312、GB18030、ISO8859-1”等;

【生成规则】

1.当“开始行号”与“结束行号”同时存在时则同时限制,满足从开始到结束后的行所在文本的提取规则;

2.当仅有“开始行号”时,匹配符合“开始行号”到文件末尾的内容部分;

3.当仅有“结束行号”时,匹配从开始行号到符合“结束行号”时的内容部分;

源码结构

image.png

运行效果

image.png

(文件行内容前缀)

image.png

(文件内容行号)

其它说明

(1)整体上个人还是比较喜欢按前者的文件行内容前缀的匹配模式,对于时常遇到生产问题的日志排查范围也会依照时间段的范围定位,所以按照日志文件开头部分的日期前缀进行匹配,但对于某些时候的错误日志输出的异常堆栈并不包含行开始匹配的前缀,所以就依赖结束行的限制,若结束行限制参数存在时将会继续往后筛选,整体上实现值得动手一试。

(2)本期给出的仅为源码示例功能,原为Eclipse下的项目代码默认编码为GBK,同时打包制作成exe的事情本期就跳过了,本站有制作打包教程,源码工程下载为:demo.zip


 点赞


 发表评论

当前回复:作者

 评论列表


留言区