技术领域
[0001] 本
发明涉及日志技术,尤其涉及Android日志信息过滤方法及系统。
背景技术
[0002] 系统日志用于记录系统中各
硬件、
软件所发生的事件,及运行过程中的异常信息。在系统测试过程中,开发及测试人员可利用上述日志信息查找异常,为系统进行排错,以达到不断优化系统性能的目的。但是由于系统日志不仅包含异常信息,还包含了正确的调试信息,信息量巨大,因此常常需要借助工具以提高效率。
[0003] 对于Android系统,通常采用adblogcat命令,输出或保存日志在文件中,通过参数设置,过滤出特定的日志信息。
[0004] 尽管adblogcat命令具备过滤日志信息的功能,但一方面,由于日志格式中仅包括模
块名称和模块的日志级别(包括错误级别、调试级别、警告级别、及详细信息级别),因此,在对日志信息进行过滤时,只能使用模块名称或日志级别限定日志的输出结果,过滤方式有限,过滤出的结果不够精确,常常需要进一步手动筛选以获取所需的结果;同时,日志信息中并未提供对应的代码
位置,存在
定位含糊问题,要通过过滤出的异常信息准确找到代码中异常出现的位置,需要花费大量的时间和精
力,效率低下。
[0005] 另一方面,adblogcat命令默认只能打印Linux
内核日志之外的系统日志,而对于Linux内核日志,则需要通过Linux内核中提供的dmesg命令来进行打印。也就是说对于系统不同层日志的打印,需要分开处理,无形中增加了人工搜索查找日志的工作量。同时由于dmesg命令不支持过滤功能,因此要在Linux内核日志中查找需要的信息只能通过人工搜索查找的方式,效率低下。
发明内容
[0006] 本发明要解决的技术问题是:提供一种Android日志信息过滤方法及系统,能够对日志信息进行更精细的过滤,得到更为精确的结果。
[0007] 本发明进一步要解决的技术问题是:该方法及系统能够通过异常信息准确定位代码中出现异常的位置。
[0008] 本发明还要进一步解决的技术问题是:该方法及系统能够实现对系统不同层日志信息的统一管理。
[0009] 为解决上述技术问题,本发明提供一种Android日志信息的过滤方法,包括:
[0010]
修改系统各层原始日志信息,使其具备自定义格式;
[0011] 过滤日志信息;
[0012] 所述自定义格式包括关键字层名称、模块名称、函数方法名称及状态信息。
[0013] 进一步地,所述自定义格式还包括关键字文件名称及函数方法所对应的行号。
[0014] 进一步地,所述过滤日志信息的步骤包括:
[0015] 设置日志配置信息;
[0016] 捕获日志信息;
[0017] 将捕获的日志信息与配置信息进行匹配;
[0018] 对符合匹配条件的结果进行记录。
[0019] 进一步地,所述设置日志配置信息的步骤包括对关键字层名称、模块名称、函数方法名称及状态信息进行设置。
[0020] 进一步地,所述捕获日志信息的步骤包括:对经dmesg命令打印输出的Linux内核日志、以及经adblogcat命令打印输出的其他系统日志进行抓取。
[0021] 进一步地,该方法还包括:
[0022] 设置一用于使日志信息在原始格式与自定义格式之间切换的格式切换
开关。
[0023] 本发明同时提供一种Android日志信息的过滤系统,包括:
[0024] 用于修改系统各层原始日志信息,使其具备自定义格式的日志自定义模块;
[0025] 及用于过滤日志信息的日志过滤模块。
[0026] 进一步地,所述日志过滤模块包括:
[0027] 用于设置日志配置信息的日志配置模块;
[0028] 用于捕获日志信息的日志捕获模块;
[0029] 用于对捕获的日志信息与日志配置信息进行匹配的日志匹配模块;
[0030] 及用于对符合匹配条件的结果进行记录的日志记录模块。
[0031] 进一步地,所述日志捕获模块集成有dmesg及adblogcat命令。
[0032] 进一步地,该系统还包括用于使日志信息在原始格式与自定义格式之间切换的格式切换开关。
[0033] 与
现有技术相比,本发明通过修改系统各层原始日志信息,使其具备包括关键字层名称、模块名称、函数方法名称及状态信息的自定义格式,从而实现对日志信息更精细的过滤,得到更为精确的结果,减少了开发及测试人员的工作量;通过日志信息中所包含的函数方法所对应的行号,可精确查找到代码中出现异常的位置,从而提高了开发及测试人员的工作效率;通过集成dmesg、adblogcat命令实现对系统不同层日志信息的统一管理。
附图说明
[0034] 图1是本发明日志信息过滤系统的示意图;
[0035] 图2是本发明日志匹配模块工作流程示意图;
[0036] 图3是本发明日志信息过滤方法的流程示意图。
具体实施方式
[0037] 下面结合
说明书附图和具体实施方式对本发明作进一步的描述。
[0038] 如图1所示,本发明的日志信息过滤系统包括:用于修改系统各层原始日志信息,使其具备自定义格式的日志自定义模块1、及用于过滤日志信息的日志过滤模块2。
[0039] 首先针对现有过滤方式有限、过滤结果不够精确的问题,对各层中原始日志信息进行修改,自定义系统各层日志格式,使日志信息包含层名称、模块名称、文件名称、函数方法名称、函数方法所对应的行号、及状态信息等关键字,其中层名称包括从最底层至最上层的内核层、hal层、jninative层及java层,状态信息包括正确、错误及警告状态。对日志信息进行过滤时,通过其所包含的关键字层名称、模块名称、函数方法名称及状态信息,即可得到包含特定关键字的信息;例如想要得到系统测试所需某特定模块中某特定函数的异常信息,则可以通过设置层名称为该模块所处的层、设置模块名称为该特定模块名称、设置函数方法名称为该特定函数名称、以及设置状态信息为错误状态,对日志信息进行过滤;由于日志格式细化至模块名称及函数方法名称,因此该种方式过滤的结果较现有过滤方式过滤的结果更为精确。进一步地,通过日志信息所包含的关键字文件名称及函数方法所对应的行号,即可确定代码中出现异常的准确位置,而不再需要手动查找,提高了工作效率。
[0040] 在自定义日志格式的过程中,还设置了一个用于使日志信息在原始格式与自定义格式之间切换的格式切换开关,以保证在需要的时候能够调用原始格式的日志信息。其具体实现是通过设置一个
指定的配置参数,例如,当设置该参数为true时,输出原始日志,否则过滤日志。
[0041] 经自定义格式后的日志信息作为日志过滤模块2的输入,由其对日志信息进行统一管理。如图1所示,日志过滤模块2包括:用于设置日志配置信息的日志配置模块3、用于捕获日志信息的日志捕获模块4、用于对捕获的日志信息与配置信息进行匹配的日志匹配模块5、用于对符合匹配条件的结果进行记录的日志记录模块6、及用于输出所记录日志信息的日志输出模块7。
[0042] 日志配置模块3对日志配置信息进行设置,亦即对所需要特定日志信息的关键字层名称、模块名称、函数方法名称及状态信息进行设置,例如需要查找hal层的异常日志信息,则设置日志层名称为hal层、设置日志状态信息为错误状态。
[0043] 日志捕获模块4集成了dmesg命令及adblogcat命令,对经dmesg命令打印输出的Linux内核日志、以及经adblogcat命令打印输出的其他系统日志进行抓取。
[0044] 日志匹配模块5根据日志配置模块3中所设置的配置信息,对日志捕获模块4所捕获的日志信息逐条逐级进行匹配。其具体匹配过程如图2所示,读取一条日志信息,根据配置信息对该日志信息进行层匹配,即将该条日志信息的层名称与配置信息中的层名称进行对比;如果层名称匹配,则继续进行模
块匹配,否则返回读取下一条日志信息;如果日志配置模块3中未对层名称进行设置,则无需进行层匹配,直接进行模块匹配。以此类推,直至依照层、模块、函数方法、及状态信息的顺序对该条日志信息逐级匹配完毕,如果该条日志的各关键字均与配置信息匹配,则通过日志记录模块6对其进行记录,并通过日志输出模块7通知用户。通过以上匹配过程,开发及测试人员即可过滤出包含特定层和模块,甚至特定方法和状态的日志信息,之后根据日志信息中所包含的关键字文件及函数方法所对应的行号,即可精确查找到代码中出现异常的位置,提高了的工作效率。
[0045] 参考图3,为本发明日志信息过滤方法的
流程图,包括以下步骤:
[0046] S101,修改系统各层原始日志信息,使其具备自定义格式,其中自定义格式包括关键字:层名称、模块名称、函数方法名称、及状态信息,以实现对日志信息更精确的过滤;该自定义格式还可以进一步包括关键字文件名称及函数方法所对应的行号,以便确定代码中出现异常的准确位置。
[0047] S102,设置日志配置信息;
[0048] S103,捕获日志信息;
[0049] S104,将捕获的日志信息与配置信息进行匹配;
[0050] S105,对符合匹配条件的结果进行记录。