一种用户可配置报文格式的日志报文实时监听及解析方法技术

技术编号:35773503 阅读:17 留言:0更新日期:2022-12-01 14:16
本申请实施例提出了一种用户可配置报文格式的日志报文实时监听及解析方法,包括读取xml日志报文格式配置文件;通过监听接口对日志报文进行实时监听,将监听到的日志报文放入日志接收缓冲区;从日志接收缓冲区内读取日志报文,基于日志报文ID对已读取到的格式配置进行匹配;根据获取到的报文格式字段节点配置信息对日志报文进行解析,输出解析结果。通过读取用户配置的方式开线程实时监听网络数据链路层日志报文或者UDP日志报文,并通过日志报文格式缓存和代码优化等方式实时解析接收到的日志报文,实现日志报文的高效实时监听。同时基于多类型的xml报文格式配置,支持日志报文字段值内容的解析以及具体含义输出。文字段值内容的解析以及具体含义输出。文字段值内容的解析以及具体含义输出。

【技术实现步骤摘要】
一种用户可配置报文格式的日志报文实时监听及解析方法


[0001]本申请属于日志报文处理领域,尤其涉及一种用户可配置报文格式的日志报文实时监听及解析方法。

技术介绍

[0002]目前地铁信号系统各子系统解析日志报文工具的方法通常有两种:
[0003]一种方法是报文解析工具硬编码的方式,这种方法的优点是初始开发容易,缺点是需开发的代码量大、后期维护成本居高不下,日志报文格式出现变化或者新增日志报文格式就要修改工具代码编译后重新发布工具版本。
[0004]另外一种方法是部分报文格式可配置,优点是有一定的灵活性,降低了工具维护的成本;缺点是支持的报文类型和数据类型不丰富,可变长度字段、可选组合字段或者按位解析等不支持,部分类型字段的解析不详细,也不支持字段内容值的详细解析,严重影响了用户的使用体验和工作效率。
[0005]另外,因为信号系统各子系统基本都是周期运行的,产生的日志报文数据量庞大,目前这两种方法不支持日志报文的实时监听及解析或者实时性比较差。

技术实现思路

[0006]为了解决现有技术中存在的缺点和不足,本申请提出了一种用户可配置报文格式的日志报文实时监听及解析方法,满足各类日志报文解析相关需求,大幅提高了工作效率。
[0007]具体的,本实施例提出一种用户可配置报文格式的日志报文实时监听及解析方法,包括:
[0008]S1,读取xml日志报文格式配置文件,基于读取结果解析报文的格式配置;
[0009]S2,通过监听接口对日志报文进行实时监听,将监听到的日志报文放入日志接收缓冲区;
[0010]S3,从日志接收缓冲区内读取日志报文,基于日志报文ID对已读取到的格式配置进行匹配,获取匹配到的报文格式字段节点配置信息;
[0011]S4,根据获取到的报文格式字段节点配置信息对日志报文进行解析,输出解析结果。
[0012]可选的,所述S2包括:
[0013]S21,打开监听接口后通过开线程的方式实现日志报文的实时监听功能并放入日志报文缓冲区,或者
[0014]S22,获取用户输入的日志报文文件或报文文本信息;
[0015]其中,所述S22包括:
[0016]通过ParseSQLiteDBMsg关键字接口方式或用户操作界面输入获取用户输入的日志报文文件;通过ParseLogMsg关键字接口方式或用户操作界面输入获取用户输入的报文文本信息。
[0017]可选的,所述S4包括:
[0018]S41,假如报文字段是Field节点类型,根据Type属性信息确定获取该字段内容,根据ConvertType属性确定需进行的数据转换,根据Format属性信息确定解析输出的数据格式,根据Min和Max属性进行值范围有效性检查,根据该节点是否配置有Enum子节点列表确定是否进行具体值的匹配并输出具体含义。
[0019]可选的,所述S4包括:
[0020]S42,假如报文字段是RefMsg节点类型,则根据该节点的Name属性名称在xml报文格式配置文件中获取该子报文的字段信息然后进行解析。
[0021]可选的,所述S4包括:
[0022]S43,如果报文字段是Cycle节点类型,根据该节点Count属性确定各子节点组合循环解析的次数,Count属性值可以为10进制常量值,也可以是其他字段名;如为其他字段名,则根据该名称在已解析出来的字段值中获取具体值;确定循环次数后,依次循环进行各子节点组合的循环解析。
[0023]可选的,所述S4包括:
[0024]S44,如果报文字段是Bits节点类型,根据Type属性获取该字段值,然后依次解析处理各Bit子节点;处理Bit子节点时,根据Pos属性信息在Bits字段值中获取该字位值,如值为1则输出Ture属性信息,如为0则输出False属性信息。
[0025]可选的,所述S4包括:
[0026]S45,如果报文字段是GroupOptions节点类型,依次检查匹配各GroupOption子节点,根据GroupOption节点的ID属性和Pos属性确定是否满足匹配关系,匹配的话结束本次匹配使用该GroupOption节点信息,否则的话继续下一个GroupOption节点的匹配。
[0027]可选的,所述S4包括:
[0028]S46,如果报文字段是SubMsgs节点类型,依次检查匹配各SubMsg子节点,根据SubMsg节点的ID属性和Pos属性确定是否满足匹配关系,匹配的话结束本次匹配使用该SubMsg节点信息进行解析,否则的话继续下一个SubMsg节点的匹配;本次子报文解析处理结束后,检查被解析的报文是否还有剩余未解析的内容,如有的话进行下一轮的处理。
[0029]可选的,所述S4包括:
[0030]S47,如果报文字段是BitMsg节点类型,根据该节点的Type属性和Length属性在需解析的报文中获取2进制报文内容,依次获取各字位信息(包括的字段类型有BitField、BitGroup、BitCycle、BitSubMsgs)进行解析,处理方法和前述类似,主要差别是这些类型要按照字位为单位进行处理。
[0031]可选的,所述方法还包括:
[0032]S5,通过用户输入的报文过滤信息确定是否过滤出日志报文进行解析。
[0033]本申请提供的技术方案带来的有益效果是:
[0034]1)通过读取用户配置的方式开线程实时监听网络数据链路层日志报文或者UDP日志报文,并通过日志报文格式缓存和代码优化等方式实时解析接收到的日志报文,在普通PC机上每秒可解析几百条日志报文并输出结果,实现日志报文的高效实时监听。
[0035]2)基于多类型的xml报文格式配置,支持日志报文字段值内容的解析以及具体含义输出。
附图说明
[0036]为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]图1为本申请实施例提出的一种用户可配置报文格式的日志报文实时监听及解析方法的流程示意图;
[0038]图2为本申请实施例提出的xml报文格式配置文件示例图;
[0039]图3为本申请实施例提出的日志报文实时监听及解析的流程示例图。
具体实施方式
[0040]为使本申请的结构和优点更加清楚,下面将结合附图对本申请的结构作进一步地描述。
[0041]实施例一
[0042]具体的,本实施例提出一种用户可配置报文格式的日志报文实时监听及解析方法,如图1所示,包括:
[0043]S1,读取xml日志报文格式配置文件,基于读取结果解析报文的格式配置;
[0044]S2,通过监听接口对日志报文进行实时监听,将监听到的日志报文放入日志接收缓冲区;<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用户可配置报文格式的日志报文实时监听及解析方法,其特征在于,所述方法包括:S1,读取xml日志报文格式配置文件,基于读取结果解析报文的格式配置;S2,通过监听接口对日志报文进行实时监听,将监听到的日志报文放入日志接收缓冲区;S3,从日志接收缓冲区内读取日志报文,基于日志报文ID对已读取到的格式配置进行匹配,获取匹配到的报文格式字段节点配置信息;S4,根据获取到的报文格式字段节点配置信息对日志报文进行解析,输出解析结果。2.根据权利要求1所述的一种用户可配置报文格式的日志报文实时监听及解析方法,其特征在于,所述S2包括:S21,打开监听接口后通过开线程的方式实现日志报文的实时监听功能并放入日志报文缓冲区,或者S22,获取用户输入的日志报文文件或报文文本信息;其中,所述S22包括:通过ParseSQLiteDBMsg关键字接口方式或用户操作界面输入获取用户输入的日志报文文件;通过ParseLogMsg关键字接口方式或用户操作界面输入获取用户输入的报文文本信息。3.根据权利要求1所述的一种用户可配置报文格式的日志报文实时监听及解析方法,其特征在于,所述S4包括:S41,假如报文字段是Field节点类型,根据Type属性信息确定获取该字段内容,根据ConvertType属性确定需进行的数据转换,根据Format属性信息确定解析输出的数据格式,根据Min和Max属性进行值范围有效性检查,根据该节点是否配置有Enum子节点列表确定是否进行具体值的匹配并输出具体含义。4.根据权利要求1所述的一种用户可配置报文格式的日志报文实时监听及解析方法,其特征在于,所述S4包括:S42,假如报文字段是RefMsg节点类型,则根据该节点的Name属性名称在xml报文格式配置文件中获取该子报文的字段信息然后进行解析。5.根据权利要求1所述的一种用户可配置报文格式的日志报文实时监听及解析方法,其特征在于,所述S4包括:S43,如果报文字段是Cycle节点类型,根据该节点Count属性确定各子节点组合循环解析的次数,Count属性值可以为10进制常量值,也可以是其他字段名;如为其他字段名,则根据该名称在已解析出来的字段值中获...

【专利技术属性】
技术研发人员:潘崇斌
申请(专利权)人:浙江众合科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1