专利名称:日志处理方法、装置及电子设备
专利类型:发明专利
专利申请号:CN201910755458.0
专利申请(专利权)人:阿里巴巴集团控股有限公司
权利人地址:英属开曼群岛大开曼资本大厦一座四层847号邮箱
专利发明(设计)人:陈聪,方颖
专利摘要:本发明实施例提供了一种日志处理方法、装置及电子设备,其中方法包括:根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录;将所述日志记录和与所述客户端当前的运行状态进行关联存储;将所述运行状态发送至云端。本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。
主权利要求:
1.一种日志处理方法,包括:
根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录;
将所述日志记录和与所述客户端当前的运行状态进行关联存储;
将所述运行状态发送至云端;
接收来自云端的日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态;所述日志调取指令是所述云端根据所述运行状态对所述客户端的异常进行识别,在识别出客户端出现异常的情况下发送的;
根据所述与异常相关的一个或多个运行状态获取对应的一条或者多条日志记录,并向云端发送。
2.根据权利要求1所述的方法,其中,根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录包括:根据客户端当前的运行状态,从系统日志中读取与该运行状态相关的一条或者多条日志记录。
3.根据权利要求1所述的方法,其中,将所述日志记录和与所述客户端当前的运行状态进行关联存储包括:存储所述日志记录,并根据所述运行状态,为所述日志记录建立索引,或者将所述运行状态附加到所述日志记录上。
4.根据权利要求1所述的方法,其中,将所述日志记录和与所述客户端当前的运行状态在客户端的本地进行关联存储。
5.根据权利要求1所述的方法,其中,还包括:获取客户端当前的运行状态下,客户端所在设备的设备能力状态信息;
将所述设备能力状态信息发送至云端。
6.一种日志处理方法,包括:
接收客户端发送的一条或多条运行状态;
根据所述运行状态对所述客户端的异常进行识别,如果识别出客户端出现异常,向所述客户端发出日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态;
接收所述客户端发送的与所述异常相关的所述一个或多个运行状态对应的一条或者多条日志记录;其中,所述一个或多个运行状态与所述对应的一条或者多条日志记录是在所述客户端关联存储的。
7.根据权利要求6所述的方法,其中,还包括:响应于多个客户端与云端建立连接,为每个客户端对应建立状态实例,所述状态实例用于执行所述根据所述运行状态对所述客户端的异常进行识别的处理。
8.根据权利要求6所述的方法,其中,根据所述运行状态对所述客户端的异常进行识别包括:基于预设的异常判定规则对所述客户端的异常进行识别,所述异常判定规则包括:业务处理过程中,运行状态组合和/或运行状态的顺序和\或运行状态出现的频度。
9.根据权利要求6所述的方法,其中,还包括:接收客户端发送的与异常相关的一个或多个运行状态对应的一条或者多条日志记录;
对所述一条或者多条日志记录进行分析,确定所述异常出现的原因。
10.根据权利要求6所述的方法,其中,还包括:如果识别出客户端出现异常,则发出报警信息。
11.根据权利要求6所述的方法,其中,还包括:接收客户端发送的设备能力状态信息,所述根据所述运行状态对所述客户端的异常进行识别包括:根据所述运行状态和设备能力状态信息,对所述客户端的异常进行识别。
12.一种日志处理装置,包括:
日志记录获取模块:用于根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录;
关联存储模块:用于将所述日志记录和与所述客户端当前的运行状态进行关联存储;
状态发送模块:用于将所述运行状态发送至云端;
日志发送模块:用于接收来自云端的日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态;所述日志调取指令是所述云端根据所述运行状态对所述客户端的异常进行识别,在识别出客户端出现异常的情况下发送的;
根据所述与异常相关的一个或多个运行状态获取对应的一条或者多条日志记录,并向云端发送。
13.根据权利要求12所述的装置,其中,根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录包括:根据客户端当前的运行状态,从系统日志中读取与该运行状态相关的一条或者多条日志记录。
14.根据权利要求12所述的装置,其中,将所述日志记录和与所述客户端当前的运行状态进行关联存储包括:存储所述日志记录,并根据所述运行状态,为所述日志记录建立索引,或者将所述运行状态附加到所述日志记录上。
15.根据权利要求12所述的装置,其中,将所述日志记录和与所述客户端当前的运行状态进行关联存储还包括:将所述日志记录和与所述客户端当前的运行状态对应的运行状态在客户端的本地进行关联存储。
16.根据权利要求12所述的装置,其中,还包括:能力状态信息获取模块:用于在客户端当前的运行状态下,获取客户端所在设备的设备能力状态信息;
将所述设备能力状态信息发送至云端。
17.一种日志处理装置,包括:
状态接收模块:用于接收客户端发送的一条或多条运行状态;
异常识别模块:用于根据所述运行状态对所述客户端的异常进行识别,如果识别出客户端出现异常,向所述客户端发出日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态;
接收所述客户端发送的与所述异常相关的所述一个或多个运行状态对应的一条或者多条日志记录;其中,所述一个或多个运行状态与所述对应的一条或者多条日志记录是在所述客户端关联存储的。
18.根据权利要求17所述的装置,其中,根据所述运行状态对所述客户端的异常进行识别包括:基于预设的异常判定规则对所述客户端的异常进行识别,所述异常判定规则包括:业务处理过程中,运行状态组合和/或运行状态的顺序和\或运行状态出现的频度。
19.根据权利要求17所述的装置,其中,还包括:日志记录分析模块:用于接收客户端发送的与异常相关的一个或多个运行状态对应的一条或者多条日志记录;
对所述一条或者多条日志记录进行分析,确定所述异常出现的原因。
20.根据权利要求17所述的装置,其中,还包括:报警模块:用于当识别出客户端出现异常时,发出报警信息。
21.根据权利要求17所述的装置,其中,还包括:能力状态信息接收模块:用于接收客户端发送的设备能力状态信息,所述根据所述运行状态对所述客户端的异常进行识别包括:根据所述运行状态和设备能力状态信息,对所述客户端的异常进行识别。
22.一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行权利要求1至5中任一所述的日志处理方法。
23.一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以执行权利要求6至11中任一所述的日志处理方法。 说明书 : 日志处理方法、装置及电子设备技术领域[0001] 本申请涉及一种日志处理方法、装置及电子设备,属于计算机技术领域。背景技术[0002] 目前线下智能设备在运行时产生的数据量越来越大,从而,产生的日志所占用的存储空间也很大,现有技术中,通常是把日志上传到云数据库中,然后在云端读取日志数据,进行排查问题。从而云端存储空间消耗很大,带宽成本高,并且分析和排查问题耗费大量时间,效率较低。发明内容[0003] 本发明实施例提供一种日志处理方法、装置及电子设备以节约云端存储空间及带宽的消耗。[0004] 为了实现上述目的,本发明实施例提供了一种日志处理方法,包括:[0005] 根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录;[0006] 将所述日志记录和与所述客户端当前的运行状态进行关联存储;[0007] 将所述运行状态发送至云端。[0008] 本发明实施例还提供了一种日志处理方法,包括:[0009] 接收客户端发送的一条或多条运行状态;[0010] 根据所述运行状态对所述客户端的异常进行识别,如果识别出客户端出现异常,向所述客户端发出日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态。[0011] 本发明实施例还提供了一种日志处理装置,包括:[0012] 日志记录获取模块:用于根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录;[0013] 关联存储模块:用于将所述日志记录和与所述客户端当前的运行状态进行关联存储;[0014] 状态发送模块:用于将所述运行状态发送至云端。[0015] 本发明实施例还提供了一种日志处理装置,包括:[0016] 状态接收模块:用于接收客户端发送的一条或多条运行状态;[0017] 异常识别模块:用于根据所述运行状态对所述客户端的异常进行识别,如果识别出客户端出现异常,向所述客户端发出日志调取指令,所述日志调取指令中包括与异常相关的一个或多个运行状态。[0018] 本发明实施例还提供了一种电子设备,包括:[0019] 存储器,用于存储程序;[0020] 处理器,用于运行所述存储器中存储的所述程序,以执行上述的日志处理方法。[0021] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0022] 上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。附图说明[0023] 图1为本发明实施例的日志处理方法的应用场景示意图;[0024] 图2为本发明实施例的日志处理方法的流程示意图之一;[0025] 图3为本发明实施例的日志处理方法的流程示意图之二;[0026] 图4为本发明实施例的日志处理装置的结构示意图之一;[0027] 图5为本发明实施例的日志处理装置的结构示意图之二;[0028] 图6为本发明实施例的电子设备的结构示意图。具体实施方式[0029] 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。[0030] 现有技术中,线下智能设备客户端产生的日志通常是上传到云数据库中,然后在云端读取日志数据,进行排查问题。从而云端存储空间消耗很大,带宽成本高,并且分析和排查问题耗费大量时间,效率较低。[0031] 本发明实施例在客户端执行的业务处理的过程中,将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,云端不再存储客户端的日志记录,而仅与客户端之间同步运行状态,从而减少了日志文件传输所占用的带宽,以及云端存储客户端日志记录而占用的空间。[0032] 其中,在本发明的智能设备客户端执行业务处理的场景中,客户端是指安装于移动终端或者计算机上的执行业务处理的应用程序,例如该客户端可以为安装于智能门锁设备上的应用程序,该应用程序用户执行基于人脸或者指纹的识别而进行开锁或者关锁处理。业务处理指客户端进行的具体的事务的处理,例如智能门锁的客户端进行的开锁或关锁的处理。另外,运行状态指业务处理所处的阶段,不同的业务处理可以被分解为多个运行状态。例如,以智能门锁开锁场景为例,该业务处理可以包括如下几种运行状态:[0033] 运行状态1:触碰唤醒门锁。在大部分情况下,门锁处于休眠状态,只有在用户触碰控制面板时,才会唤醒门锁。[0034] 运行状态2:人脸图像采集,在该状态下,开启摄像头进行人脸图像拍摄并存入内存中。[0035] 运行状态3:人脸特征比对,在该状态下,将采集到的人脸图像与用户注册的人脸图像进行比对,以对开锁用户的身份进行核对,核对结果可以为人脸识别通过和人脸识别未通过,在未通过的情况下,可以转到运行状态5,在通过的情况下,可以转到运行状态4。[0036] 运行状态4:打开门锁状态,在该状态下,执行门锁开启的控制处理。[0037] 运行状态5:密码输入状态,在该状态下,接收用户通过触碰控制面板输入密码。[0038] 运行状态6:密码比对状态,在该状态下,将用户输入的密码与预先存储的用户密码进行比对以进行密码验证,验证结果可以为密码验证通过和密码验证未通过,在密码验证通过的情况下,可以转到运行状态4打开门锁,在密码验证未通过的情况下,可以在此转到运行状态6让用户再次输入密码,另外,在运行状态6被重复3次以上后,转入运行状态7,锁定门锁。[0039] 运行状态7:对门锁进行锁定,在该状态下,禁止人脸识别以及密码识别功能。[0040] 上述示例中,说明了智能门锁的最基本业务处理逻辑,整个业务处理被划分为上述的7个运行状态,根据上述的运行状态,从系统日志中读取与运行状态相关的一条或者多条日志记录,其中,本发明中的日志记录用于记录客户端执行业务处理的具体动作内容,例如,客户端读取的数据、访问的文件、数据处理的动作、对硬件或者软件执行的控制动作等。在上述智能门锁开门的场景中,与状态2相关的日志记录可以包括:摄像头的打开、关闭,图像拍摄、保存的动作,以及摄像头的运行状态记录等,与状态3相关的日志记录可以包括:从内存中读取拍摄图像的动作记录、对图像进行图像分析处理的记录等。[0041] 进一步地,为了便于信息存储和向云端的传输,可以将各个运行状态赋予对应的运行状态标识,从而,在下文介绍的将日志记录与各个运行状态进行关联存储以及向云端发送运行状态的过程,可以通过与运行状态对应的状态标识进行关联存储及向云端发送运行状态标识的方式来执行。其中,运行状态标识可以根据具体的客户端以及执行的业务处理中对于运行状态的划分进行规定。如前面所示的示例中,可以将各个运行状态赋予简单的数字和/或字母的编号,也可以直接采用文字信息作为标识。作为与运行状态对应的运行状态标识可以只标识该运行状态本身,也可以标识出运行状态中涉及的一些内容信息,比如,上述的运行状态3涉及人脸比对,在建立运行状态标识时,可以让运行状态标识只表示执行了人脸识别这个业务处理状态,例如,采用“运行状态3”作为标识,也可以进一步标识出执行了人脸识别这个业务处理后的结果,例如,采用“运行状态3‑通过”、“运行状态3‑未通过”作为标识。运行状态标识如何设定,可以根据具体的业务应用,以及对于异常的识别规则而进行灵活设定。[0042] 在规定好运行状态标识后,可以进行如下两方面的处理:[0043] 一方面可以将运行状态与日志记录进行关联存储,也就是将运行状态对应的运行状态标识与日志记录进行关联存储,具体地,可以通过将运行状态标识作为日志记录的索引进行关联,还可以将运行状态标识附加到日志记录上进行关联,并对关联后的日志记录进行存储,其中,可以存储在客户端本地(客户端所在的计算机或者移动终端),另外,还可以存储在云端以外的任何位置,例如,可以存储在客户端所在的局域网的文件服务器上。[0044] 另一方面,向云端发送运行状态,具体可以为向云端发送运行状态对应的运行状态标识,从而与云端同步客户端的业务处理的运行状态。向云端上报运行状态标识的时机可以在每次运行状态发生变化时进行上报,例如在当前运行状态结束时或者在新的运行状态开始时,此外,也可以周期性的进行运行状态上报,例如,每隔一分钟上报这段时间中经历的运行状态。[0045] 进一步地,云端接收客户端发送的多个运行状态,根据业务处理执行的不同的跳转情况,该运行状态形成不同的运行状态序列,例如,在上述的智能门锁开门的场景中,可以形成如下的序列:[0046] 序列1(正常序列):运行状态1—运行状态2—运行状态3—运行状态4。在这个序列下,用户通过人脸识别的方式,在人脸识别通过后,进行了开锁。[0047] 序列2(正常序列):运行状态1—运行状态2—运行状态3—运行状态5—运行状态6——运行状态4。在这个序列下,用户通过人脸识别的方式,但由于某种原因,人脸识别未通过,便转入密码识别的方式,并且在用户输入正确密码后,通过验证,执行了开锁。[0048] 序列3(正常序列):运行状态1—运行状态2—运行状态3—运行状态5—运行状态6—运行状态5—运行状态6——运行状态5—运行状态6—运行状态7。在这个序列下,由于用户密码输入3次为未通过,而对门锁进行了锁定。[0049] 以上的序列1到序列3都是智能门锁所执行的正常的业务处理而产生的运行状态序列。[0050] 而下面的序列,就是智能门锁所执行的业务处理出现异常时而产生的运行状态序列:[0051] 序列4(异常序列):运行状态1—运行状态2—运行状态3—运行状态3—运行状态3。在这里我们假定预设的业务处理规则就是人脸识别只进行一次,如果未通过就进行密码验证。在该序列下,在执行一次人脸特征比对后没有通过,而再次执行了多次人脸特征比对(运行状态3),这样的序列说明了业务处理出现了异常。[0052] 序列5(异常序列):运行状态1—运行状态2—运行状态3—运行状态5—运行状态6—运行状态5—运行状态6—运行状态5—运行状态6—运行状态5—运行状态6—运行状态4。在序列5所示的业务处理过程中,密码输入以及验证的处理执行了4次,虽然最终密码验证成功,但是和预设的业务规则不符合(密码最多输入3次,超过3次对门锁进行锁定),因此,该业务处理也出现了异常。[0053] 需要说明的是,上述业务处理的逻辑可以根据实际需要而灵活设定,以上仅为示例性说明。[0054] 云端在不断接收来自客户端的运行状态后,形成上述的各种运行状态序列,然后可以基于预设的异常判定规则对客户端的异常进行识别。具体地,判定规则可以为多个正常的运行状态的顺序或者运行状态的组合,例如,上述的序列1、2、3的运行状态的顺序及组合。另外,还可以设定运行状态出现的频度,例如在预设的时间内出现小于预设次数的运行状态,具体地,例如,在30秒内人脸图像采集失败的次数小于3次可以视为正常,反之,则视为异常。[0055] 以上的介绍仅仅是能够发现客户端的业务处理出现了异常,而还不知道异常的具体原因,因此,需要调取相关日志来进行进一步的原因分析。[0056] 例如,在序列4(异常序列)的情况下,当云端发现异常时,向客户端发送日志调取指令,以调取与异常相关的日志记录,从而进行进一步分析。而对于云端而言,只需要告知客户端与该异常相关的运行状态即可,例如,较为简单的方式,可以将上述序列4中包含的全部运行状态通过日志调取指令发送给客户端,让客户端提供与这些运行状态相关的全部日志记录。当然,云端也可以在日志调取指令中包含与异常直接相关的运行状态,例如,序列4的异常在于,执行了多次的人脸检测,那么可以将运行状态2和运行状态3发送给客户端,让客户端仅提供这两个运行状态相关的日志即可。[0057] 进一步地,与运行状态2相关的日志记录可以包括:摄像头的运行状态记录,打开、关闭以及图像拍摄和保存的动作。与运行状态3相关的日志记录,例如可以包括:从内存中读取拍摄图像的动作记录、对图像进行图像分析处理的记录等。云端获取到这些日志记录后,可以进行深入分析,以确定异常的原因。例如,通过对运行状态2的日志记录进行分析发现,在摄像头进行拍照完成后,并没有关闭摄像头,而是一直处于拍摄状态,从而导致内存始终有新的图像产生,从而导致运行状态3的日志记录中,不断地执行图像分析处理。[0058] 从上面的示例可以看出,云端仅需要有针对性的获取与异常相关的日志记录即可,而不需要获取全部的日志记录,从而减少了由于大量日志传输造成的带宽浪费以及云端存储大量日志记录的浪费。另外,以上对于日志记录的分析仅仅为示例,对于在识别出异常并调取到相关日志后如何进行识别处理,可以根据不同的业务处理内容,来灵活执行针对日志记录的分析策略或者模型,并且在实际的应用中,还可以根据对日志记录的分析,执行相应的控制处理,例如,在上述的智能门锁开门的场景中,当出现了多次人脸特征比对的异常情况时,对于普通用户来说,可能并不知道到怎么处理该异常情况,因此,云端可以根据预设的指令对设备执行复位重启等处理策略,以实现在异常情况下,通过网络主动的对设备进行智能化的控制管理。此外,在异常情况下,通过对日志记录的分析,设备出现一些复杂的故障情况,云端还可以对接相应的设备维护平台、第三方系统等,向其发送设备维护请求,以对故障设备进行处理。[0059] 至此,上述描述为通过将客户端运行状态与状态日志相关联,并将客户端运行状态发送到云端,云端根据预设的判定规则对所接收到的运行状态所形成的序列进行判断来识别异常情况的过程,此外,在上述基于运行状态的判定的基础上,还可以结合客户端所在设备的能力状态信息进行判断。其中,能力状态信息指的是设备的硬件能力,例如,设备运行的硬件参数,设备硬件是否正常运行(如指示灯是否正常发光,喇叭是否正常发声)等。[0060] 具体地,将客户端当前的运行状态下,客户端所在设备的能力状态信息发送到云端,云端接收客户端发送的能力状态信息,结合运行状态和能力状态信息,对异常情况进行识别,例如,在上述的智能门锁开门的场景中,在预设的时间内接收到大于预设次数的人脸图像采集失败的运行状态标识,并且接收到显示摄像头不能启动的能力状态信息,因此,结合该运行状态标识和能力状态信息,更加有助于识别摄像头故障的异常情况。[0061] 以上介绍了客户端将与状态日志相关联的运行状态(还可以包括能力状态)发送给云端,云端通过运行状态(还可以包括能力状态)来识别异常情况的过程。在实际应用中,云平台将会面对大量的客户端进行监控和管理,例如,众多店铺中设置的大量的IOT(物联网)设备等,上述的对客户端的异常监控的处理可以通过在云端为每个客户端创建状态实例来实现,该状态实例就是用于实现对客户端的运行状态进行监控以及出现异常时进行及时处理。[0062] 具体地,在多个客户端与云端建立连接时,可以响应于客户端联机上线的请求,在云端为每个客户端对应的创建状态实例,该状态实例相当于客户端在云端的动态的状态镜像,当客户端的运行状态(还可以包括能力状态)发生变化时,客户端将运行状态实时同步给状态实例,从而,状态实例可以对各个运行状态进行识别处理,并对线下设备进行相应的管理。上述的状态实例是动态创建的,也就是说是随着客户端的上线或者说是IOT设备开机后与云端建立连接后而创建的,在下线或者关机后,会释放该状态实例的资源,这样的方式即保证了对客户端监控的实时性又能够实现及时的资源释放,从而减少对云端资源的浪费。[0063] 另外,上述的应用场景还可以应用于云上运维平台,该平台可以为线下的IOT设备提供托管等功能。店铺的经营者可以将整个店铺的IOT设备进行托管,而不用经常进行人工的检测。例如,店铺中的智能门锁、电梯、自动售货机、冷冻柜、空调等都可以对接云端的状态实例,从而实现对IOT设备的实时状态监控,当发现异常时,可以及时通知第三方平台来进行检修维护,例如可以通知对店铺进行运维服务的第三方平台或者通知设备的提供方的维修部门来进行检修作业。此外,由于各个IOT设备的实时状态在云端存在镜像,店铺管理员也可以通过APP接入云端来实时查看店铺中各个IOT设备的状态,当出现异常时,云端也会主动通过APP通知店铺管理员,以便进行及时处理。另外,对于一些异常状态,云端也可以直接介入,对各个IOT设备进行控制处理,比如重启机器,在设备负载过大时关闭设备休息一段时间后再开机,出现断电时启动备用电源等。通过本发明实施例提供云端的托管服务,能够减少店铺管理者对设备监测和维护方面的负担,从而能够让店铺方更加专注于店铺自身的经营。[0064] 下面作为示例,介绍一下为实现日志处理方法而在云端和客户端分别部署的相关模块结构。[0065] 如图1所示,其为本发明实施例的日志处理方法的应用场景示意图,图中所示的客户端一侧部署了日志管理模块、状态管理模块及能力管理模块,其中,日志管理模块可以用于日志的查询和存储,具体地,客户端产生的日志可以通过普通日志接口、富媒体日志接口、AOP(AspectOrientedProgramming,面向切面编程)日志接口、状态日志接口、上传日志接口等接口对普通日志、视频、图片、AOP日志及状态日志等进行上传和下载,再经过日志写队列管理子模块、日志读队列管理子模块对上传的日志数据进行读取和写入,并经过日志流式压缩子模块和日志流式加密子模块的压缩和加密进而由SQLite(是一种轻型的数据库)存储子模块、图片数据存储子模块及日志淘汰策略管理等子模块对不同类型的日志数据进行存储和管理。[0066] 状态管理模块用于对客户端运行状态进行上传及管理,具体地,该模块可以与上述的日志管理模块进行交互,将客户端运行状态通过状态注入子模块或者状态注解子模块与日志进行关联,生成日志的索引,还可以通过状态查询子模块及状态管理子模块进行状态的查询及管理,例如可以与云端交互,通过长链通道向云端发送运行状态,以及在云端发送调取日志指令时,查询其中异常相关的运行状态进而查询对应的日志。[0067] 能力状态模块用于对客户端所在设备的能力状态进行查询和管理,具体地,与上述状态管理模块类似,该模块可以与日志管理模块进行交互,将客户端所在设备的能力状态通过能力注入子模块或者能力注解子模块与日志进行关联,生成日志的索引,还可以通过能力查询子模块及能力管理子模块进行能力状态的查询及管理,例如可以与云端交互,向云端发送能力状态。[0068] 以上介绍了客户端一侧的模块,上述模块可以设置于智能设备、移动终端或者计算机上的应用,并可以作为执行业务处理的应用的一部分,也可以是独立于该应用之外的系统应用。此外,以上模块还可以应用于本发明实施例以外的日志存储及状态管理的场景。[0069] 另外,图中所示的云端一侧部署了设备镜像模块、设备管理模块、日志查询模块及状态报警模块。其中,设备管理模块中的设备注册子模块及设备网络通道子模块分别对设备信息进行注册及设备网络通道进行管理,设备镜像模块中通过状态镜像子模块及能力镜像子模块同步了客户端的运行状态及能力状态,从而云端根据运行状态及能力状态识别客户端异常,并在发现异常后由状态报警模块发出报警消息,由日志查询模块向客户端发出调取与异常相关的日志的命令。[0070] 以上为云端一侧的模块,上述模块可以设置于与客户端具有通信连接的云服务器或者业务处理平台。另外,上述客户端及云端的交互可以通过图中所示的长链通道进行信息交互。[0071] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0072] 下面通过一些具体实施例来进一步说明本发明的技术方案。[0073] 实施例一[0074] 如图2所示,其为本发明实施例的日志处理方法的流程示意图之一,该方法可以运行于客户端一侧,该客户端可以是运行于智能设备、移动终端或者计算机上的应用,该方法包括如下步骤:[0075] S101:根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录。[0076] 具体地,可以根据客户端当前的运行状态,从系统日志中读取与该运行状态相关的一条或者多条日志记录。其中,这里所说的系统日志为客户端运行过程中产生的所有系统日志,包括系统运行过程中所有事件的硬件信息、软件信息和系统问题的信息等。[0077] S102:将日志记录和与客户端当前的运行状态进行关联存储。具体地,可以存储日志记录,并根据运行状态,为日志记录建立索引,或者将运行状态附加到日志记录上。其中,客户端执行的业务处理可以包括一个或多个运行状态。为了便于信息存储和向云端的传输,可以将各个运行状态赋予对应的运行状态标识,运行状态标识可以根据具体的客户端以及执行的业务处理中对于运行状态的划分进行规定,从而可以基于运行状态标识来建立索引以及向云端上报运行状态,例如,可以将各个运行状态赋予简单的数字和/或字母的编号,对客户端的各个运行状态进行统一的标识定义,比如,将开机状态定义为S001、关机状态定义为S002、人脸识别定义为S003、指纹识别定义为S004等,通过这样的方式避免了对运行状态的复杂信息描述,从而简化数据信息存储和数据传输的过程。作为与运行状态对应的运行状态标识可以只标识该运行状态本身,也可以标识出运行状态中涉及的一些内容信息,例如,可以通过定义数据格式,可以让运行状态标识中前几位标识运行状态本身而后几位标识业务处理的结果,比如“S004+R001”可以表示指纹识别(S004)成功(R001)。需要说明的是,上述的运行状态标识只是为了实现数据存储和传输的简化而进行的信息编码方式,在本发明实施例的技术思想下,也可以采用其他的描述方式来定义运行状态,只要能够将各个运行状态加以区分,实现对日志关联存储以及能够向云端上报运行状态即可。[0078] 进一步地,在规定好运行状态标识后,可以将该标识与日志记录进行关联存储,具体地,可以通过将运行状态标识作为日志记录的索引进行关联,还可以将运行状态标识附加到日志记录上进行关联,并对关联后的日志记录进行存储,其中,可以存储在客户端本地(客户端所在的计算机或者移动终端),另外,还可以存储在云端以外的任何位置,例如,可以存储在客户端所在的局域网的文件服务器上。[0079] S103:将运行状态发送至云端。[0080] 具体地,可以向云端发送运行状态对应的运行状态标识,从而来向与云端同步客户端的业务处理的运行状态。[0081] 以上描述为客户端通过将客户端运行状态标识与状态日志相关联,并将运行状态标识发送到云端的过程,进一步地,该方法还可以包括以下的步骤:[0082] S104:接收来自云端的日志调取指令,日志调取指令中包括与异常相关的一个或多个运行状态;[0083] 根据与异常相关的一个或多个运行状态获取对应的一条或者多条日志记录,并向云端发送。[0084] 云端识别到异常情况后,向客户端发出调取日志的指令,其中,日志调取指令中不需要发送具体的日志记录相关的信息,而只需要告知客户端要调取哪些运行状态对应的日志记录即可,从而,客户端根据运行状态标识调取对应的日志记录并发送给云端。[0085] 进一步地,在上述的客户端将运行状态标识发送给云端以用于云端根据运行状态判定异常情况的基础上,还可以获取客户端当前的运行状态下,客户端所在设备的设备能力状态信息,将设备能力状态信息发送至云端。从而云端可以结合运行状态和设备能力状态信息对异常情况进行识别。其中,能力状态信息指的是设备的硬件能力,例如,设备运行的硬件参数,设备硬件是否正常运行(如指示灯是否正常发光,喇叭是否正常发声)等。另外,在本发明实施例中,能力状态信息也可以和运行状态信息一样,与状态日志进行关联存储。[0086] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0087] 实施例二[0088] 上述实施例为本发明的日志处理方法的客户端一侧的处理,以下实施例将对云端的处理进行描述,如图3所示,其为本发明实施例的日志处理方法的流程示意图之二,该方法可以运行于云端一侧,在本发明实施例中,云端可以是与上述客户端具有通信连接的云服务器或者业务处理平台等,通过与客户端的交互获取信息,从而对客户端进行异常监控以及异常原因识别等,另外,该云服务器或者业务处理平台也可以与客户端进行信息交互,从而实现客户端执行的业务处理。该方法包括如下步骤:[0089] S201:接收客户端发送的一条或多条运行状态。[0090] 具体地,仍然可以如前面实施例所提到的,采用运行状态标识来代表运行状态,客户端与云端之间通过运行状态标识来同步运行状态的相关情况。该运行状态标识一方面同步了客户端的在进行业务处理时的运行状态,另一方面,在下文的云端识别到异常情况后,通过向客户端发送运行状态标识来调取异常相关的客户端日志。[0091] S202:根据运行状态对客户端的异常进行识别,如果识别出客户端出现异常,向客户端发出日志调取指令,日志调取指令中包括与异常相关的一个或多个运行状态。[0092] 具体地,可以基于预设的异常判定规则对客户端的异常进行识别,其中,异常判定规则可以包括:业务处理过程中,运行状态组合和/或运行状态的顺序和\或运行状态出现的频度,通过将接收到的运行状态标识对应的运行状态所组成的运行状态序列与判定规则作比较,从而识别不符合判定规则的客户端异常,并且,在发现异常后,向客户端发出日志调取指令,其中,云端在向客户端调取日志记录时,不需要发送具体的日志记录相关的信息,而只需要发送与异常相关的运行状态标识,告知客户端要调取哪些运行状态对应的日志记录即可。[0093] 上述介绍了云端接收客户端运行状态,并根据运行状态对客户端的异常进行识别,并调取异常相关的客户端日志的过程,进一步地,该方法还可以包括如下的接收日志并分析原因的步骤S203:接收客户端发送的与异常相关的一个或多个运行状态对应的一条或者多条日志记录;对一条或者多条日志记录进行分析,确定异常出现的原因。[0094] 在识别出异常并调取到相关日志后,可以根据不同的业务处理内容,来灵活执行针对日志记录的分析策略或者模型,必要时,也可以通过人工接入来进行异常原因的深入分析。[0095] 另外,云端在发现异常情况后,除向客户端调取相关日志以外,还可以发出报警消息,以通知业务处理的相关人员尽快处理异常情况。[0096] 以上为云端通过接收运行状态标识,并根据运行状态来识别异常的判定方式,在此基础上,该方法还可以通过接收客户端发送的设备能力状态信息,根据运行状态标识和设备能力状态信息,对客户端的异常进行识别。[0097] 上述介绍了云端通过运行状态(还可以包括能力状态)来识别异常情况的过程,此外,在多个客户端与云端建立连接时,还可以响应于客户端联机上线的请求,在云端为每个客户端对应的创建状态实例,该状态实例相当于客户端在云端的动态的状态镜像,当客户端的运行状态(还可以包括能力状态)发生变化时,客户端将运行状态实时同步给状态实例,从而,状态实例可以对各个运行状态进行识别处理,并对线下设备进行相应的管理。[0098] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0099] 实施例三[0100] 如图4所示,其为本发明实施例的日志处理装置的结构示意图之一,该装置设置于客户端一侧,该客户端可以是运行于智能设备、移动终端或者计算机上的应用,该日志处理装置可以作为执行业务处理的应用的一部分,也可以是独立于该应用之外的系统应用,其中,该日志处理装置包括:[0101] 日志记录获取模块31:用于在客户端执行的业务处理的过程中,根据客户端当前的运行状态获取与该运行状态相关的一条或者多条日志记录。[0102] 具体地,可以根据客户端当前的运行状态,从系统日志中读取与该运行状态相关的一条或者多条日志记录。其中,这里所说的系统日志为客户端运行过程中产生的所有系统日志,包括系统运行过程中所有事件的硬件信息、软件信息和系统问题的信息等。[0103] 关联存储模块32:用于将日志记录和与客户端当前的运行状态进行关联存储,客户端执行的业务处理包括一个或多个运行状态。[0104] 具体地,在存储日志记录的过程中,根据运行状态,为日志记录建立索引,或者将运行状态附加到日志记录上。其中,客户端执行的业务处理可以包括一个或多个运行状态,为了便于信息存储和向云端的传输,可以将各个运行状态赋予对应的运行状态标识,运行状态标识可以根据具体的客户端以及执行的业务处理中对于运行状态的划分进行规定,从而可以基于运行状态标识来建立索引以及向云端上报运行状态,例如,可以将各个运行状态赋予简单的数字和/或字母的编号。作为与运行状态对应的运行状态标识可以只标识该运行状态本身,也可以标识出运行状态中涉及的一些内容信息。需要说明的是,上述的运行状态标识只是为了实现数据简化而进行的信息编码方式,在本发明实施例的技术思想下,也可以采用其他的描述方式来定义运行状态,只要能够将各个运行状态加以区分,实现对日志关联存储以及能够向云端上报运行状态即可。[0105] 进一步地,在规定好运行状态标识后,可以将该标识与日志记录进行关联存储,具体地,可以通过将运行状态标识作为日志记录的索引进行关联,还可以将运行状态标识附加到日志记录上进行关联,并对关联后的日志记录进行存储,其中,可以存储在客户端本地(客户端所在的计算机或者移动终端),另外,还可以存储在云端以外的任何位置,例如,可以存储在客户端所在的局域网的文件服务器上。[0106] 状态发送模块33:用于将运行状态发送至云端。[0107] 具体地,可以向云端发送运行状态标识,从而来向与云端同步客户端的业务处理的运行状态。[0108] 以上模块实现了客户端通过将运行状态标识与状态日志相关联,并将运行状态标识发送到云端的过程,进一步地,该装置还可以包括以下模块:[0109] 日志发送模块34,用于接收来自云端的日志调取指令,日志调取指令中包括与异常相关的一个或多个运行状态;[0110] 根据与异常相关的一个或多个运行状态获取对应的一条或者多条日志记录,并向云端发送。[0111] 云端识别到异常情况后,向客户端发出调取日志的指令,其中,日志调取指令中不需要发送具体的日志记录相关的信息,而只需要告知客户端要调取哪些运行状态对应的日志记录即可,从而,客户端根据运行状态调取对应的日志记录并发送给云端。[0112] 另外,在上述的客户端将运行状态标识发送给云端以用于云端根据运行状态判定异常情况的基础上,该装置还可以包括能力状态信息获取模块:用于在客户端当前的运行状态下,获取客户端所在设备的设备能力状态信息,将设备能力状态信息发送至云端。从而云端可以结合运行状态和设备能力状态信息对异常情况进行识别。[0113] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0114] 实施例四[0115] 如图4所示,其为本发明实施例的日志处理装置的结构示意图之二,该装置用于实现云端一侧的处理,其中包括:[0116] 状态接收模块41:用于接收客户端发送的一条或多条运行状态。[0117] 具体地,仍然可以如前面实施例所提到的,采用运行状态标识来代表运行状态客户端与云端之间通过运行状态标识来同步运行状态的相关情况。该运行状态标识一方面同步了客户端的在进行业务处理时的运行状态,另一方面,在下文的云端识别到异常情况后,通过向客户端发送运行状态标识来调取异常相关的客户端日志。[0118] 异常识别模块42:用于根据运行状态对客户端的异常进行识别,如果识别出客户端出现异常,向客户端发出日志调取指令,日志调取指令中包括与异常相关的一个或多个运行状态。[0119] 具体地,可以基于预设的异常判定规则对客户端的异常进行识别,其中,异常判定规则可以包括:业务处理过程中,运行状态组合和/或运行状态的顺序和\或运行状态出现的频度,通过将接收到的运行状态标识对应的运行状态所组成的运行状态序列与判定规则作比较,从而识别不符合判定规则的客户端异常,并且,在发现异常后,向客户端发出日志调取指令,其中,云端在向客户端调取日志记录时,不需要发送具体的日志记录相关的信息,而只需要发送与异常相关的运行状态标识,告知客户端要调取哪些运行状态对应的日志记录即可。[0120] 此外,该异常识别模块内部还可以包括状态实例建立模块,用于响应于多个客户端与云端建立连接,为每个客户端对应建立状态实例,状态实例用于执行根据运行状态对客户端的异常进行识别的处理。[0121] 具体地,在多个客户端与云端建立连接时,还可以响应于客户端联机上线的请求,在云端为每个客户端对应的创建状态实例,该状态实例相当于客户端在云端的动态的状态镜像,当客户端的运行状态(还可以包括能力状态)发生变化时,客户端将运行状态实时同步给状态实例,从而,状态实例可以对各个运行状态进行识别处理,并对线下设备进行相应的管理。[0122] 上述模块实现了云端接收客户端运行状态标识,并根据运行状态标识对客户端的异常进行识别,并调取异常相关的客户端日志的过程,进一步地,该装置还可以包括如下模块以对日志记录进行分析:[0123] 日志记录分析模块43,用于接收客户端发送的与异常相关的一个或多个运行状态对应的一条或者多条日志记录,对一条或者多条日志记录进行分析,确定异常出现的原因。[0124] 在识别出异常并调取到相关日志后,可以根据不同的业务处理内容,来灵活执行针对日志记录的分析策略或者模型,必要时,也可以通过人工接入来进行异常原因的深入分析。[0125] 另外,该装置还可以包括报警模块:用于当识别出客户端出现异常时,发出报警信息,以通知业务处理的相关人员尽快处理异常情况。[0126] 以上模块实现了云端通过接收运行状态标识,并根据运行状态来识别异常的判定方式,在此基础上,该装置还可以包括能力状态信息接收模块:用于接收客户端发送的设备能力状态信息,根据运行状态标识和设备能力状态信息,对客户端的异常进行识别。[0127] 本发明实施例通过将客户端运行状态与状态日志关联存储在客户端,并将客户端运行状态发送到云端,云端通过对客户端运行状态进行监控,在发现异常时,再向客户端调取与异常相关的日志记录,而不是一开始就存储大量的客户端日志或者让客户端上报全部的日志记录,从而避免对大量日志排查造成的时间耗费、以及日志文件上传所造成云端存储空间的浪费以及带宽资源的浪费。[0128] 实施例五[0129] 前面实施例描述了本发明实施例的流程处理及装置结构,上述的方法和装置的功能可借助一种电子设备实现完成,如图5所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器110和处理器120。[0130] 存储器110,用于存储程序。[0131] 除上述程序之外,存储器110还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。[0132] 存储器110可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。[0133] 处理器120,耦合至存储器110,用于执行存储器110中的程序,以执行前述实施例中所描述的日志处理方法的操作步骤。[0134] 此外,处理器120也可以包括前述实施例所描述的各种模块以执行日志处理,并且存储器110可以例如用于存储这些模块执行操作所需要的数据和/或所输出的数据。[0135] 对于上述处理过程具体说明、技术原理详细说明以及技术效果详细分析在前面实施例中进行了详细描述,在此不再赘述。[0136] 进一步,如图所示,电子设备还可以包括:通信组件130、电源组件140、音频组件150、显示器160等其它组件。图中仅示意性给出部分组件,并不意味着电子设备只包括图中所示组件。[0137] 通信组件130被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件130经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件130还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。[0138] 电源组件140,为电子设备的各种组件提供电力。电源组件140可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。[0139] 音频组件150被配置为输出和/或输入音频信号。例如,音频组件150包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器110或经由通信组件130发送。在一些实施例中,音频组件150还包括一个扬声器,用于输出音频信号。[0140] 显示器160包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。[0141] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。[0142] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
专利地区:英国
专利申请日期:2019-08-15
专利公开日期:2024-07-26
专利公告号:CN112395175B