异常d和异常e,定义"从终端本地获取视频"的操作和异常d对应的级 别为化rorW及"从终端本地获取视频"的操作和异常e对应的级别为Warn。
[0042] 在本步骤中,假设客户端正在执行"拍摄视频"的操作,在当前时间产生一条日志1 并将该日志1存储在终端本地。终端检测出客户端执行"拍摄视频"的操作W及客户端产 生的日志,获取该操作的当前操作情况,假设客户端在执行"拍摄视频"的操作过程中发生 异常A,所W该当前操作情况为发生操作异常,根据"拍摄视频"的操作和异常A,获取对应 的级别为化itical,将该日志1的级别设置为级别化itical。
[0043] 步骤202;根据该级别确定该日志是否为异常操作的日志。
[0044] 具体地,判断该级别是否为预设级别,如果是,则确定该日志为异常操作的日志, 如果不是则确定该日志不是异常操作的日志。
[0045] 其中,由于每种操作在发异常时对应的级别高于其在未发异常时对应的级别,因 此可W预设级别最高的几个级别,送些预设级别都是操作在发生异常时对应的级别,因此 当该日志的级别为预设级别时,便可W将该日志确定为异常操作的日志。
[0046] 例如,假设预设级别为化tal和化itical,送两个级别都是异常操作对应的级别。 其中,日志1的级别为化itical,所W日志1的级别为预设级别,因此可W将日志1确定为 异常操作的日志。
[0047] 其中,在本步骤中,如果确定出该日志为异常操作的日志,则执行步骤203,如果确 定出该日志不是异常操作的日志,则返回步骤201继续对客户端进行实时检测。
[0048] 步骤203;如果是异常操作的日志,则获取最新产生的预设大小日志。
[0049] 其中,异常操作的日志仅记录发生该异常操作时的现场数据,并不记录该异常操 作之前发生了哪些操作,技术人员根据该异常操作W及在该异常操作之前执行部分操作, 才能分析出异常操作发生的原因,因此技术人员分析异常操作发生的原因除了需要该异常 操作的日志,还需要在该异常操作的日志之前产生的日志,因此在本步骤中需要获取最新 产生的预设大小日志,W上报给服务器。最新产生的预设大小日志包括该异常操作的日志 和客户端在该异常操作的日志之前产生的日志。
[0050] 例如,假设预设大小为512邸,其中,日志1为发生异常操作的日志,日志1的大小 为2邸,在日志1之前客户端产生了 600邸的日志,则获取客户端在日志1之前最新产生的 大小为510邸的日志和日志1,由获取的510邸的日志和日志1组成预设大小为512邸的日 志。
[0051] 步骤204 ;获取执行该操作的模块的标识、该模块中产生异常操作的代码行、该代 码行所在的代码存储文件的标识W及该代码行在该代码存储文件中的位置信息。
[0052] 其中,客户端中包括多个不同的模块,每个模块用于执行不同的操作。例如,对于 用于上传短视频的客户端,该客户端包括上传模块、拍摄模块、获取模块和编辑模块,上传 模块用于执行"上传视频"的操作、拍摄模块用于执行"拍摄视频"的操作,获取模块用于执 行"从终端本地获取视频"的操作,W及编辑模块用于执行"编辑视频"的操作。
[0053] 客户端中的每个模块是技术人员通过编程语言编写出的,所W该模块对应一段程 序代码,且用一个或多个代码存储文件来存储该模块对应的程序代码。客户端的某个模块 在执行操作实质上是该模块对应的代码存储文件中的程序代码在终端中运行。在终端运行 该代码存储文件中的程序代码时,如果该代码存储文件中的某个代码行出错,则运行到该 代码行时可W导致该模块发生异常,即该模块执行的操作发生异常。
[0054] 其中,代码行所在的代码存储文件的标识可W为该代码存储文件的文件名,该代 码行在该代码存储文件中的位置信息可W为该代码行在该代码存储文件的行号。
[0055] 例如,获取执行"拍摄视频"操作的拍摄模块的标识为M0DULE_Photo,W及 获取拍摄模块在执行时发生异常操作的代码行,从终端本地存储的拍摄模块对应的 代码存储文件中获取该代码行所在的代码存储文件,获取该代码存储文件的标识为 GinuploadStrategyByHTTP.m,在从该代码存储文件中获取该代码行的位置信息,假设该代 码行为该代码存储文件中的第148行的代码,所W该代码行在该代码存储文件中的位置信 息为行号148。
[0056] 步骤205;客户端将该模块的标识、该代码存储文件的标识、该位置信息和客户端 的版本号组成查询字符串;
[0057] 其中,该查询字符串可W唯一的标识该异常操作的日志。
[005引例女日,该模块的标识为M0DULE_Photo,该代码存储文件的标识为GinuploadStrategyByHTTP.m,该位置信息为第148行,客户端的版本号为2. 5. 1. 1,则组成 的查询字符串为:
[0059] "M0DULE_Photo_2. 5. 1.I-GinuploadStrategyB州TTP.m_148"。
[0060] 步骤206 ;向服务器发送携带该查询字符串的查询请求消息,使服务器查询自身 包含的异常操作的日志数目。
[0061] 其中,服务器在收到携带该查询字符串的查询请求消息,根据该查询字符串查找 自身存储的数据库,该数据库用于存储查询字符串与异常操作的日志数目的对应关系,女口 果查找出对应的异常操作的日志数目,则向终端发送查找的异常操作的日志数目;如果没 有查找出对应的异常操作的日志数目,则设置该异常操作的日志数目为0,向终端发送该异 常操作的日志数目0,将该查询字符串和设置的异常操作的日志数目0的对应关系存储在 数据库中。
[0062] 例如,服务器中包括如表1所示的数据库,该数据库用于存储查询字符串与异常 操作的日志数目的对应关系。
[0063] 表1
[0065] 终端向服务器发送查询请求消息,该查询请求消息携带如下的查询字符串 "M0DULE_Photo_2. 5. 1.LGinuploadStrategyB州TTP.m_148"。服务器收到终端发送的该查 询请求消息后,根据该查询请求消息携带的查询字符串,查找如表1所示的数据库,并查找 出对应的异常操作的日志数目为3,则向终端发送查找的异常操作的日志数目3。
[0066] 步骤207 ;接收服务器发送的异常操作的日志数目。
[0067] 例如,终端接收服务器发送的异常操作的日志数目3。
[006引步骤208 ;如果该日志数目小于预设阔值,则将获取的预设大小的日志组成日志 文件,向服务器发送该日志文件。
[0069] 例如,假设预设阔值为5,接收的异常操作的日志数目为3,该异常操作的日志数 目小于预设阔值5,则将获取的预设大小的日志组成日志文件,向服务器发送该日志文件。
[0070] 进一步地,在向服务器发送该日志文件之前,获取附加信息,将日志文件的文件名 设置为由获取的模块的标识、代码存储文件的标识、位置信息、客户端的版本号和附加信息 组成的字符串,然后再向服务器发送该日志文件。
[0071] 其中,附加信息包括当前的网络情况、用户在客户端中的用户标识和当前的时间 戳信息中的至少一者。例如,获取当前的网络情况为WiFi,获取用户标识为1014987519,获 取当前的时间戳为2014-08-0111:56:21. 339,且在步骤205中获取的查询字符串为:
[0072] "M0DULE_Photo_2. 5. 1.I-GinuploadStrategyB州TTP.m_148"。
[0073] 根据该查询字符串,当前的网络情况为WiFi,用户的标识为1014987519,当前 的时间戳为2014-08-0111:56:21. 339,将组成的日志文件的文件名设置为;"M0DULE_ Photo_2. 5.I.l_GinuploadStrategyByHTTP.m_148_WIFI_1014987519_2014-08-0111:56:2 I. 339.txt"。其中,".txt"为日志文件的后缀名。
[0074] 服务器接收终端发送的该日志文件,存储该日志文件。如此技术人员可W对存储 的日志文件进行分析得到客户端发生异常的原因。另外,日志文件的文件名由查询字符串 和附加信息组成,有时技术人员只需要根据日志文件的文件名就可W了解大概情况,并对 客户端发生异常的原因进行分析,而不