一种Android端基于AOP和AspectJ的日志自动埋点方法及系统技术方案

技术编号:15863704 阅读:43 留言:0更新日期:2017-07-23 07:54
本发明专利技术公开了一种Android端基于AOP和AspectJ的日志自动埋点方法及系统,该方法包括以下步骤:编写用于日志埋点的自定义注解;引用面向切面框架的AspectJ编译方式;编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。本发明专利技术实现了日志自动埋点,统一日志风格,使用注解方式提高开发量,将可以有效减少开发代码量和实现代码解耦提高开发效率。

【技术实现步骤摘要】
一种Android端基于AOP和AspectJ的日志自动埋点方法及系统
本专利技术涉及Android端软件编程
,尤其涉及一种Android端基于AOP和AspectJ的日志自动埋点方法及系统。
技术介绍
在目前Android客户端项目开发过程中,基本是多人合作开发模式,在开发过程中需要调试打印Log日志以便记录和观察功能模块执行是否有误,Log日志对于开发人员来说是极为重要的检测程序流程逻辑是否正确的检测手段,在多人合作开发过程中由于每个人开发习惯和行为可能不一致,这样会导致代码杂乱。AspectJ的动机是发现那些使用传统的编程方法无法很好处理的问题。考虑一个要在某些应用中实施安全策略的问题。安全性是贯穿于系统所有模块间的问题,每个模块都需要应用安全机制才能保证整个系统的安全性,这里的安全策略的实施问题就是一个横切关注点,使用传统的编程解决此问题非常的困难而且容易产生差错。传统的面向对象编程中,每个单元就是一个类,而类似于安全性这方面的问题,它们通常不能集中在一个类中处理因为它们横跨多个类,这就导致了代码无法重用,可维护性差而且产生了大量代码冗余。
技术实现思路
本专利技术要解决的技术问题在于针对现有技术中由于不同开发人员的不同开发习惯,导致日志代码杂乱,传统的面向对象编程可维护性差而且产生了大量代码冗余的缺陷,提供一种Android端基于AOP和AspectJ的日志自动埋点方法及系统。本专利技术解决其技术问题所采用的技术方案是:本专利技术提供一种Android端基于AOP和AspectJ的日志自动埋点方法,包括以下步骤:编写用于日志埋点的自定义注解;引用面向切面框架的AspectJ编译方式;编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。进一步地,本专利技术的自定义注解的目标元素类型包括构造函数、方法和字段,注解的作用时段为运行时有效。进一步地,本专利技术的引用AspectJ编译的方法包括:通过在Gradle构建脚本中,定义任务来执行AspectJ编译;使用第三方AspectJ集成插件执行AspectJ编译。进一步地,本专利技术的定义的切入点匹配规则包括:Activity和Fragment类的切入点,用于自动打印Activity和Fragment生命周期函数执行时间和时长;函数方法切入点,用于自动打印目标函数的执行时长、传入参数和返回结果;属性切入点,用于自动打印类中定义的属性值变化状况。进一步地,本专利技术的实现Activity和Fragment生命周期函数执行时间和时长自动打印的方法为:通过切入点函数表示所有继承自Activity和Fragment的类中前缀带有on的函数方法切入点,在对应的切入点函数中执行记录时间差和统计时长的目标方法,将执行结果按格式打印到日志中。进一步地,本专利技术的实现目标函数的执行时长、传入参数和返回结果的自动打印的方法为:通过切入点函数匹配自定义注解中的函数方法切入点,对所有匹配到的函数方法进行代码注入,通过API获取到该函数方法的参数值,参数值包括目标函数的执行时长、传入参数和返回结果,将执行结果按格式打印到日志中。进一步地,本专利技术的实现类中定义的属性值变化状况的自动打印的方法为:通过切入点函数匹配自定义注解中的属性切入点,对所有匹配到的属性进行代码注入,通过API获取到该属性值的变化状况,将执行结果按格式打印到日志中。本专利技术提供一种Android端基于AOP和AspectJ的日志自动埋点系统,包括:自动注解单元,用于编写用于日志埋点的自定义注解;AspectJ编译单元,用于引用面向切面框架的AspectJ编译方式;切面程序单元,用于编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;日志输出单元,用于在程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。本专利技术产生的有益效果是:本专利技术的Android端基于AOP和AspectJ的日志自动埋点方法,利用AOP切面编程思想,通过AspecJ技术基于自定义注解方式实现Log日志自动埋点,统一Log日志风格,使用注解方式提高开发量,将可以有效减少开发代码量和实现代码解耦提高开发效率;本专利技术能够统一多人开发过程中日志输出格式,提高开发效率和代码解耦;利用AOP切面编程思想实现运行时代码自动插入Log自动埋点,便于阅读和分析Log日志。附图说明下面将结合附图及实施例对本专利技术作进一步说明,附图中:图1是本专利技术实施例的流程图;图2是本专利技术实施例的系统框图;图3是本专利技术实施例的切面示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。术语说明:AOP:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。Aspectj:一种基于Java平台的面向切面编程的语言,定义了各种连接点集合来实现AOP的概念,有如下概念词汇。Advice(通知):典型的Advice类型有before、after和around,分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。Jointpoint(连接点):程序中可能作为代码注入目标的特定的点和入口。Pointcut(切入点):告诉代码注入工具,在何处注入一段特定代码的表达式。Aspect(切面):Pointcut和Advice的组合看做切面。Weaving(织入):注入代码(advices)到目标位置(jointpoints)的过程。自定义注解:使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。如图1所示,本专利技术实施例的Android端基于AOP和AspectJ的日志自动埋点方法,包括以下步骤:S1、编写用于日志埋点的自定义注解;自定义注解的目标元素类型包括构造函数、方法和字段,注解的作用时段为运行时有效。S2、引用面向切面框架的AspectJ编译方式;引用AspectJ编译的方法包括:通过在Gradle构建脚本中,定义任务来执行Aspect本文档来自技高网...
一种Android端基于AOP和AspectJ的日志自动埋点方法及系统

【技术保护点】
一种Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,包括以下步骤:编写用于日志埋点的自定义注解;引用面向切面框架的AspectJ编译方式;编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。

【技术特征摘要】
1.一种Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,包括以下步骤:编写用于日志埋点的自定义注解;引用面向切面框架的AspectJ编译方式;编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。2.根据权利要求1所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,自定义注解的目标元素类型包括构造函数、方法和字段,注解的作用时段为运行时有效。3.根据权利要求1所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,引用AspectJ编译的方法包括:通过在Gradle构建脚本中,定义任务来执行AspectJ编译;使用第三方AspectJ集成插件执行AspectJ编译。4.根据权利要求1所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,定义的切入点匹配规则包括:Activity和Fragment类的切入点,用于自动打印Activity和Fragment生命周期函数执行时间和时长;函数方法切入点,用于自动打印目标函数的执行时长、传入参数和返回结果;属性切入点,用于自动打印类中定义的属性值变化状况。5.根据权利要求4所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,实现Activity和Fragment生命周期函数...

【专利技术属性】
技术研发人员:杜文彬
申请(专利权)人:武汉斗鱼网络科技有限公司
类型:发明
国别省市:湖北,42

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

1