一种日志存储方法、装置、设备、存储介质和车辆
文献发布时间:2024-04-18 20:01:30
技术领域
本发明涉及车辆技术领域,尤其涉及一种日志存储方法、装置、设备、存储介质和车辆。
背景技术
在车辆技术领域,需要对车端的日志信息进行存储,用于在车辆发生故障时进行问题定位,现有技术通常对所有日志信息进行存储。随着车辆技术的快速发展,车端的日志信息量快速增长,现有的日志信息存储方式会存储大量冗余日志,占用车辆有限的空间且大量存储的日志信息会降低问题定位效率。
发明内容
本发明提供一种日志存储方法、装置、设备、存储介质和车辆,通过存储日志等级低于或等于目标日志等级的日志信息,并在目标日志信息在计数周期内的累计数量大于目标最大阈值或小于目标最小阈值时,调整目标日志等级,从而减少冗余日志的存储,节约了存储空间,提高了日志的存储效率和故障问题定位效率。
为实现上述目的,本发明提供了一种日志存储方法,包括:
接收日志信息,并解析得到所述日志信息的日志等级;
将目标日志信息存储到本地;其中,所述目标日志信息为所述日志等级低于或等于当前设置的目标日志等级的日志信息;
当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级;其中,所述目标最大阈值为与所述目标日志等级对应的最大阈值,所述目标最小阈值为与所述目标日志等级对应的最小阈值,所述目标最小阈值小于所述目标最大阈值。
作为上述方案的改进,所述当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级,包括:
当所述目标日志信息在预设的计数周期内的累计数量大于目标最大阈值时,降低所述目标日志等级;
当所述累计数量小于目标最小阈值时,提高所述目标日志等级。
作为上述方案的改进,还包括:
当所述目标日志信息在所述计数周期内的累计数量大于所述目标最大阈值且所述目标日志等级的调整存在周期性时,将所述目标最大阈值加上预存的动态调整因子,得到更新后的目标最大阈值,并调整所述目标日志等级;
当所述目标日志信息在所述计数周期内的累计数量小于所述目标最小阈值且所述目标日志等级的调整存在周期性时,将所述目标最小阈值减去以动态调整因子,得到更新后的目标最小阈值,并调整所述目标日志等级。
作为上述方案的改进,所述动态调整因子通过以下公式计算得到:
其中,S表示动态调整因子,b表示所述目标日志等级的调整周期,a表示数据传输带宽,v表示数据处理速率,offset表示预设的步长偏差值。
作为上述方案的改进,所述当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级之前,还包括:
设置缓存节点,用于记录所述目标日志信息的累计数量以及存储所述目标日志信息的时间戳。
作为上述方案的改进,所述日志信息由日志时间戳、日志等级、日志类型、日志格式和消息体组成。
作为上述方案的改进,所述当所述目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级之前,还包括:
设置缓存节点,用于记录所述目标日志信息的累计数量以及存储所述目标日志信息的时间戳。
为实现上述目的,本发明还提供了一种日志存储装置,包括:
日志信息接收模块,用于接收日志信息,并解析得到所述日志信息的日志等级;
日志信息存储模块,用于将目标日志信息存储到本地;其中,所述目标日志信息为所述日志等级低于或等于当前设置的目标日志等级的日志信息;
目标日志等级调整模块,用于当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级;其中,所述目标最大阈值为与所述目标日志等级对应的最大阈值,所述目标最小阈值为与所述目标日志等级对应的最小阈值,所述目标最小阈值小于所述目标最大阈值。
本发明实施例提供的日志存储装置,能够实现上述实施例所述的日志存储方法的所有流程步骤,装置中的各个模块、单元的作用以及实现的技术效果分别与上述实施例所述的日志存储方法的作用以及实现的技术效果对应相同,具体实现方式在此不赘述。
为实现上述目的,本发明实施例还提供了一种日志存储设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一实施例所述的日志存储方法。
为实现上述目的,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述任一实施例所述的日志存储方法。
为实现上述目的,本发明实施例还提供了一种车辆,包括车辆本体和上述实施例所述的日志存储装置。
与现有技术相比,本发明实施例公开的一种日志存储方法、装置、设备、存储介质和车辆,首先,接收日志信息,并解析得到所述日志信息的日志等级;接着,当所述日志信息的日志等级低于或等于当前设置的目标日志等级时,将所述日志信息作为目标日志信息存储到本地;最后,当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级。本发明实施例通过设置目标日志等级,只存储日志等级低于或等于目标日志等级的日志信息,能够减少冗余日志的存储,提高存储效率,进一步地,当目标日志信息在计数周期内的累计数量大于目标最大阈值或小于目标最小阈值时,调整目标日志等级,通过灵活地调整目标日志等级从而能够适应实时产生的日志量,具备更强的实用性。
附图说明
图1是本发明一实施例提供的一种日志存储方法的流程图;
图2是本发明一实施例提供的日志应用的工作流程图;
图3是本发明实施例提供的LRU节点的基本数据结构;
图4是本发明一实施例提供的一种日志存储装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明实施例提供的一种日志存储方法的流程图,所述日志存储方法包括步骤S1~S3:
S1、接收日志信息,并解析得到所述日志信息的日志等级。
S2、将目标日志信息存储到本地;其中,所述目标日志信息为所述日志等级低于或等于当前设置的目标日志等级的日志信息。
S3、当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级;其中,所述目标最大阈值为与所述目标日志等级对应的最大阈值,所述目标最小阈值为与所述目标日志等级对应的最小阈值,所述目标最小阈值小于所述目标最大阈值。
示例性的,所述日志存储方法可以由日志应用实现。参见图2,是本发明实施例提供的日志应用的工作流程图。在步骤S1中,所述接收日志信息是接收车辆产生的所有日志信息,示例性的,参见图2,日志信息可以是从域控制器内的应用、域控制器的微控制单元(MCU,Microcontroller Unit)以及非域控制器的微控制单元中接收的。
示例性的,所述日志等级包括“FATAL”、“ERROR”、“WARN”、“INFO”和“DEBUG”,且日志等级依次变高,例如,“FATAL”低于“ERROR”,“ERROR”低于“WARN”。
在步骤S2中,示例性的,假设当前设置的目标日志等级为“ERROR”,则只有当日志信息的日志等级低于或等于“ERROR”时,也即只有当日志等级为“FATAL”或“ERROR”时,才存储所述日志信息,进一步地,存储的方式可以是以文件形式落盘到本地。可以理解的是,目标日志信息即被存储到本地的日志信息。
在步骤S3中,需要指出的是,每一个日志等级都有一个最大阈值和一个最小阈值,而目标最大阈值则是当前目标日志等级的最大阈值,目标最小阈值则是当前目标日志等级的最小阈值。示例性的,假设当前的目标日志等级为“ERROR”,则“ERROR”的最大阈值为目标最大阈值,“ERROR”的最小阈值为目标最小阈值。可以理解的是,随着目标日志等级的调整,目标最大阈值和目标最小阈值也会随着改变。
值得说明的,不同日志等级初始的最大(小)阈值可以相同,也可以不同,但是,对于每一日志等级,最小阈值小于最大阈值。
进一步地,计数周期由厂家在汽车出厂前设置,示例性的,计数周期可以取1小时。
可以理解的是,在每个计数周期开始时需要将目标日志信息的计数清零,目标日志信息的计数是指计数周期内的计数;每次将日志信息存储到本地后,需要更新目标日志信息的计数,并判断更新后的目标日志信息的计数是否大于目标最大阈值或小于目标最小阈值,若是,则说明根据当前目标日志等级采集的日志信息数量过大或过小,因此,需要调整目标日志等级。值得说明的是,当目标日志等级被调整后,无论原来的计数周期是否结束,都需要进入新的计数周期。
与现有技术相比,本发明实施例公开的一种日志存储方法通过设置目标日志等级,只存储日志等级小于或等于目标日志等级的日志信息,能够减少冗余日志,提高存储效率,进一步地,通过设置计数周期,并根据计数周期内目标日志信息的计数灵活调整目标日志等级,能够适应实时产生的日志信息量,具备更强的实用性。
在一种优选的实施方式中,所述当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级,包括:
当所述目标日志信息在预设的计数周期内的累计数量大于目标最大阈值时,降低所述目标日志等级;
当所述累计数量小于目标最小阈值时,提高所述目标日志等级。
可以理解的是,车辆在行驶的过程中会不断产生日志信息,且不同时段所产生的各日志等级的日志信息数量以及日志信息总量是不断变化的,因此,单一的目标日志等级难以适应不断变化的日志信息产生情况,本发明根据目标日志信息在计数周期内的计数动态调整目标日志等级,可以灵活地筛选日志信息,同时,通过设置计数周期,根据计数周期内目标日志信息的数量调整目标日志等级,可以使得调整后的目标日志等级更适用于当前的日志信息产生情况。
进一步地,当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值时,说明由当前目标日志等级筛选出的目标日志信息数量过多,可能会导致存储空间不足,且按照当前目标日志等级筛选出的目标日志信息里可能含有较多冗余日志信息,因此降低目标日志等级以得到新的目标日志等级,示例性的,当当前目标日志等级是“ERROR”时,将目标日志等级降低为“FATAL”。当目标日志信息的计数大于目标最大阈值时,通过降低目标日志等级,使得存储到本地的日志信息数量不会过多,也不会产生冗余日志信息,提高了存储效率,降低了存储空间的压力。
当目标日志信息在预设的计数周期内的累计数量小于目标最小阈值时,说明由当前目标日志等级筛选出的日志信息数量过少,当前存储空间还有较大剩余空间,且按照该当前目标日志等级筛选出的日志信息可能不够全面,也即还缺失一部分需要记录的日志信息,因此提高目标日志等级以得到新的目标日志等级,示例性的,当当前目标日志等级是“ERROR”时,将目标日志等级提高为“WARN”,并按照新的目标日志等级筛选日志信息。当目标日志信息的计数小于目标最小阈值时,通过提高目标日志等级,使得存储到本地的日志信息数量不会过少,防止缺失重要日志信息,也提高了存储空间的利用率。
在一种优选的实施方式中,还包括:
当所述目标日志信息在所述计数周期内的累计数量大于所述目标最大阈值且所述目标日志等级的调整存在周期性时,将所述目标最大阈值加上预存的动态调整因子,得到更新后的目标最大阈值,并调整所述目标日志等级;
当所述目标日志信息在所述计数周期内的累计数量小于所述目标最小阈值且所述目标日志等级的调整存在周期性时,将所述目标最小阈值减去动态调整因子,得到更新后的目标最小阈值,并调整所述目标日志等级。
值得说明的是,在每次调整目标日志等级后,需要记录调整的时间,并计算与上一次调整的时间间隔,得到本次调整的时间间隔,接着判断最近t个时间间隔是否都相等,也即本次调整的时间间隔与最近(t-1)个时间间隔是否相同,若是,则表示目标日志等级的调整存在周期性,则更新阈值(目标最大阈值/目标最小阈值),值得说明的是,第一次调整目标日志等级时不需要计算时间间隔。所述t用于判断目标日志等级的调整是否存在周期性,也即当连续t次调整目标日志等级的时间间隔相同时,说明存在周期性,t根据实际需要设定,示例性的,t可以取3。
在本发明一种优选的实施方式中,当目标日志信息在计数周期内的累计数量大于目标最大阈值、目标日志等级的调整存在周期性且目标日志等级的调整频率大于预设调整频率阈值时,说明此时的目标最大阈值过小导致目标日志等级的调整过于频繁,因此,将目标最大阈值加上动态调整因子,通过增大目标最大阈值,避免了频繁的目标日志等级调整,提高了系统的性能和运行效率。
同理,当目标日志信息在计数周期内的累计数量小于目标最小阈值、目标日志等级的调整存在周期性且目标日志等级的调整频率大于预设调整频率阈值时,说明此时的目标最小阈值过大导致目标日志等级的调整过于频繁,因此,将目标最小阈值减去动态调整因子,通过减小目标最小阈值,避免了频繁的目标日志等级调整,提高了系统的性能和运行效率。
在本发明一种优选的实施方式中,当目标日志信息在计数周期内的累计数量小于目标最小阈值或者大于目标最大阈值,且目标日志等级的调整存在周期性,以及目标日志等级的调整频率小于等于预设调整频率阈值时,说明此时的目标最小阈值过小或目标最大阈值过大,导致目标日志等级的调整频率过低,因此,将目标最小阈值加上动态调整因子,得到更新后的目标最小阈值,或者将目标最大阈值减去动态调整因子,得到更新后的目标最大阈值,通过相应地增大目标最小阈值或减小目标最大阈值,避免了目标日志等级长时间不变,从而能够更及时地相应日志信息的产生情况。
为了方便理解,以下以两个个具体例子进行说明。假设当前目标日志等级为“ERROR”,当检测到目标日志信息在计数周期内的累计数量大于目标最大阈值时,判断目标日志等级的调整是否存在周期性,若存在周期性,判断目标日志等级的调整频率与预设调整频率阈值的关系,假设判断结果为大于预设调整频率阈值,则将“ERROR”的最大阈值(当前目标最大阈值)加上动态调整因子,得到新的“ERROR”的最大阈值,并调整目标日志等级。又如,假设当前目标日志等级为“ERROR”,当检测到目标日志信息在计数周期内的累计数量小于目标最小阈值时,判断目标日志等级的调整是否存在周期性,若存在周期性,判断目标日志等级的调整频率与预设调整频率阈值的关系,假设判断结果为小于预设调整频率阈值,则将“ERROR”的最小阈值加上动态调整因子,得到新的“ERROR”的最小阈值,并调整目标日志等级。
与现有技术相比,本发明实施例在目标日志等级的调整存在周期性时,通过动态调整因子更新目标最大阈值/目标最小阈值,从而使得系统可以适应目标日志等级调整的周期性,可以保持阈值与目标日志等级调整的相对平衡,当调整的频率过高时,通过增大最大阈值或减小最小阈值,可以减少频繁的目标日志等级调整,提高系统的性能和运行效率,而当调整的频率过低时,通过减小最大阈值或增大最小阈值,可以及时响应各日志等级数量的变化,提供准确的日志记录,从而也更好地平衡当前剩余存储容量和目标日志等级调整频率间的关系。
在一种优选的实施方式中,所述动态调整因子通过以下公式计算得到:
其中,S表示动态调整因子,b表示所述目标日志等级的调整周期,a表示数据传输带宽,v表示数据处理速率,offset表示预设的步长偏差值。
示例性的,offset可以设置为10。值得说明的是,其具体数值并不局限于上述具体数值,可根据实际情况设置,在此不作限定。
由于存储到本地的日志信息需要传输到云端,而数据传输带宽会限制日志信息的传输速度,因此,动态调整因子的计算公式中还包括数据传输带宽a,通过在调整相关阈值时考虑数据传输带宽a的影响,可以有效减少冗余日志信息的产生,进而优化日志信息传输过程。
在一种优选的实施方式中,所述当目标日志信息在预设时间窗口内的累计数量大于最大阈值或所述累计数量小于最小阈值时,调整所述目标日志等级之前,还包括:
设置缓存节点,用于记录所述目标日志信息的累计数量以及所述目标日志信息的时间戳。
示例性的,可以设置5个LRU节点(缓存节点),分别对应“FATAL”、“ERROR”、“WARN”、“INFO”和“DEBUG”五个日志等级。参见图3,是本发明实施例提供的LRU节点的基本数据结构,每个LRU节点用于记录对应的日志等级在计数周期内存储的日志信息量,以及最近时间戳。具体地,在每次将日志信息存储到本地后,新建HashMap,在相应的LRU节点中将日志信息level id的计数num加1,并更新相应LRU节点的最近时间戳time。可以理解的是,在新的计数周期开始后需要重新初始化所有LRU节点的相关属性,包括日志信息的计数和最近时间戳。
在一种优选的实施方式中,所述日志信息由日志时间戳、日志等级、日志类型、日志格式和消息体组成。
示例性的,时间戳的单位可以为s(second,秒)或ms(millisecond,毫秒),时间戳可以是本地时间戳或者标准时间戳,其中,本地时间戳可以通过机器时钟获取,标准时间戳可以通过CAN(Controller Area Network)总线获取。
示例性的,日志信息各组成部分所占用的存储空间可以分配如下:
“时间戳”占用8BYTES(字节);“日志等级”占用3BIT(Binary Digit,比特),因此可以支持至多8种日志等级;“日志类型”占用2BIT,因此可以支持至多4种日志类型;“日志格式”占用3BIT,因此可以支持至多8种日志格式,其中,“1”可以表示信号日志格式,“2”可以表示寄存器日志格式,“3”可以表示ASCII(American Standard Code for InformationInterchange,美国信息交换标准代码)码日志格式,“4~8”可以表示预留日志格式;“消息体”占用23~1015BYTES。
与现有技术相比,本发明实施例公开的一种日志存储方法,首先,接收日志信息,并解析得到所述日志信息的日志等级;接着,当所述日志信息的日志等级低于或等于当前设置的目标日志等级时,将所述日志信息作为目标日志信息存储到本地;最后,当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级。本发明实施例通过设置目标日志等级,只存储日志等级低于或等于目标日志等级的日志信息,能够减少冗余日志的存储,提高存储效率,进一步地,当目标日志信息在计数周期内的累计数量大于目标最大阈值或小于目标最小阈值时,调整目标日志等级,通过灵活地调整目标日志等级从而能够适应实时产生的日志量,具备更强的实用性。
参见图4,本发明实施例还提供的一种日志存储装置,包括:
日志信息接收模块11,用于接收日志信息,并解析得到所述日志信息的日志等级;
日志信息存储模块12,用于将目标日志信息存储到本地;其中,所述目标日志信息为所述日志等级低于或等于当前设置的目标日志等级的日志信息;
目标日志等级调整模块13,用于当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级;其中,所述目标最大阈值为与所述目标日志等级对应的最大阈值,所述目标最小阈值为与所述目标日志等级对应的最小阈值,所述目标最小阈值小于所述目标最大阈值。
本发明实施例还提供一种日志存储设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如上述日志存储方法实施例中的步骤,例如图1中所述的步骤S1~S3;或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块的功能。
发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如上述日志存储方法实施例中的步骤,例如图1中所述的步骤S1~S3;或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块的功能。
为实现上述目的,本发明实施例还提供了一种车辆,包括车辆本体和上述实施例所述的日志存储装置。
与现有技术相比,本发明实施例公开的一种日志存储装置、设备、存储介质和车辆,首先,接收日志信息,并解析得到所述日志信息的日志等级;接着,当所述日志信息的日志等级低于或等于当前设置的目标日志等级时,将所述日志信息存储到本地;最后,当目标日志信息在预设的计数周期内的累计数量大于目标最大阈值或所述累计数量小于目标最小阈值时,调整所述目标日志等级。本发明实施例通过设置目标日志等级,只存储日志等级低于或等于目标日志等级的日志信息,能够减少冗余日志的存储,提高存储效率,进一步地,当与目标日志信息在计数周期内的累计数量大于目标最大阈值或小于目标最小阈值时,调整目标日志等级,通过灵活地调整目标日志等级从而能够适应实时产生的日志量,具备更强的实用性。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
- 基于电流扫描的激光器注入锁定波长跟踪控制器及方法
- 基于离子注入的固体激光器及固体激光器输出波长平移方法