CN106970789A - 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 - Google Patents
一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 Download PDFInfo
- Publication number
- CN106970789A CN106970789A CN201710130215.9A CN201710130215A CN106970789A CN 106970789 A CN106970789 A CN 106970789A CN 201710130215 A CN201710130215 A CN 201710130215A CN 106970789 A CN106970789 A CN 106970789A
- Authority
- CN
- China
- Prior art keywords
- daily record
- point
- aspectj
- self
- penetration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Abstract
本发明公开了一种Android端基于AOP和AspectJ的日志自动埋点方法及系统,该方法包括以下步骤:编写用于日志埋点的自定义注解;引用面向切面框架的AspectJ编译方式;编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。本发明实现了日志自动埋点,统一日志风格,使用注解方式提高开发量,将可以有效减少开发代码量和实现代码解耦提高开发效率。
Description
技术领域
本发明涉及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,分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。
Joint point(连接点):程序中可能作为代码注入目标的特定的点和入口。
Pointcut(切入点):告诉代码注入工具,在何处注入一段特定代码的表达式。
Aspect(切面):Pointcut和Advice的组合看做切面。
Weaving(织入):注入代码(advices)到目标位置(joint points)的过程。
自定义注解:使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。
如图1所示,本发明实施例的Android端基于AOP和AspectJ的日志自动埋点方法,包括以下步骤:
S1、编写用于日志埋点的自定义注解;自定义注解的目标元素类型包括构造函数、方法和字段,注解的作用时段为运行时有效。
S2、引用面向切面框架的AspectJ编译方式;引用AspectJ编译的方法包括:
通过在Gradle构建脚本中,定义任务来执行AspectJ编译;
使用第三方AspectJ集成插件gradle-android-aspectj-plugin使执行AspectJ编译。
S3、编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;
S4、程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。
定义的切入点匹配规则包括:
针对所有继承自android.app.Activity的类的以on开头的方法执行点切入,用于自动打印Activity生命周期函数执行时间和时长;
针对所有继承android.support.v4.app.Fragment的类的以on开头的方法执行点切入,用于自动打印Fragment生命周期函数执行时间和时长;
函数方法切入点,用于自动打印目标函数的执行时长、传入参数和返回结果;
针对类中的属性切入点,用于自动打印类中定义的属性值变化状况。
实现Activity和Fragment生命周期函数执行时间和时长自动打印的方法为:
通过切入点函数表示所有继承自Activity和Fragment的类中前缀带有on的函数方法切入点,在对应的切入点函数中执行记录时间差和统计时长的目标方法,将执行结果按格式打印到日志中。
本实施例中Activity的切入点函数为:
Pointcut("execution(*android.app.Activity.on*(..))&&this(activity)")
Fragment的切入点函数为:
Pointcut("execution(*android.support.v4.app.Fragment+.on*(..))&&this(fragment)")
在切入点函数里执行joinPoint.proceed()前后记录时间差,统计时长,输出日志按格式打印内容。
实现目标函数的执行时长、传入参数和返回结果的自动打印的方法为:
通过切入点函数匹配自定义注解中的函数方法切入点,对所有匹配到的函数方法进行代码注入,通过API获取到该函数方法的参数值,参数值包括目标函数的执行时长、传入参数和返回结果,将执行结果按格式打印到日志中。
在本实施例中,采用的具体方法和函数为:
在Around("(execution(@com.app.aop.annotation.LogFunc**.*(..))&&target(Object)&&this(Object))")切入方法中,通过ProceedingJoinPoint类的getSignature()方法获取到MethodSignature对象,通过getParameterNames()方法获取函数传入参名称,通过ProceedingJoinPoint.getArgs()方法获取函数参数值,输出日志按格式打印内容。
实现类中定义的属性值变化状况的自动打印的方法为:
通过切入点函数匹配自定义注解中的属性切入点,对所有匹配到的属性进行代码注入,通过API获取到该属性值的变化状况,将执行结果按格式打印到日志中。
在本实施例中,采用的具体方法和函数为:
在Around("set(@com.app.aop.annotation.LogAnyway**)&&args(newVal)&&target(t)")切入方法中,通过ProceedingJoinPoint.getSignature()方法获取FieldSignature对象,再通过FieldSignature.getName()方法获取属性名称,通过FieldSignature.getField()方法获取到Field对象,再获取属性新赋予的值,输出日志按格式打印内容。
如图2所示,本发明实施例的Android端基于AOP和AspectJ的日志自动埋点系统,包括:
自动注解单元,用于编写用于日志埋点的自定义注解;
AspectJ编译单元,用于引用面向切面框架的AspectJ编译方式;
切面程序单元,用于编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;
日志输出单元,用于在程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。
如图3所示,在本发明的另一个具体实施例中:
实现原理的是在Android客户端使用AOP思想通过AspectJ基于自定义注解方式实现项目开发过程中日志记录埋点。
AOP并没有帮助我们解决任何新的问题,它只是提供了一种更好的办法,能够用更少的工作量来解决现有的一些问题,并且使得系统更加健壮,可维护性更好。同时,它让我们在进行系统架构和模块设计的时候多了新的选择和新的思路,AspectJ帮我们实现了这些。
主要实现流程如下:
1、自定义注解LogFunc
注解可以作用的目标:
@Target({ElementType.CONSTRUCTOR,ElementType.METHOD,
ElementType.FIELD});
注解的作用时段:@Retention(RetentionPolicy.RUNTIME)
代码如下:
@Target({ElementType.CONSTRUCTOR,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public@interface LogFunc{
}
2、引用AspectJ编译,通过在Gradle构建脚本中,定义任务来使得项目执行ajc编译,将AOP的Module编织进入目标工程中,达到非侵入式AOP的目的;另外可使用第三方AspectJ集成插件gradle-android-aspectj-plugin
3、编写AspectJ切面程序代码,创建@Aspect类TraceAspect
定义pointcut切点匹配规则;
a.@Pointcut("execution(*android.app.Activity.on*(..))&&this(activity)")//针对所有继承自android.app.Activity的类的以on开头的方法执行点切入;
b.@Pointcut("execution(*android.support.v4.app.Fragment+.on*(..))&&this(fragment)")//所有继承android.support.v4.app.Fragment的类的以on开头的方法;
c.@Pointcut("(execution(@com.app.aop.annotation.LogFunc**.*(..))&&target(Object)&&this(Object))||execution(@com.app.aop.annotation.LogFuncpublic static**(..))")//函数方法切入点;
d.@Pointcut("set(@com.app.aop.annotation.LogAnyway**)&&args(newVal)&&target(t)")//针对类中的属性切入点;
实现以上切入点规则的Advice(通知):在Join Point上执行的一个动作,通知一般通过拦截器调用,向连接点注入的代码。
a.对于Activity和Fragment生命周期函数执行的Log监控AspectJ实现如下:
在@Pointcut("execution(*android.app.Activity.on*(..))&&this(activity)")切入代码点函数里执行joinPoint.proceed()前后记录时间差,统计时长
b.对于函数的执行时长、传入参数和返回结果AspectJ实现如下
在@Around("(execution(@com.app.aop.annotation.LogFunc**.*(..))&&target(Object)&&this(Object))")切入方法中通过ProceedingJoinPoint的getSignature()获取到MethodSignature,在通过getParameterNames()获取函数入参名称,ProceedingJoinPoint.getArgs()获取函数参数值,然后输出Log按格式打印内容。
在@AfterReturning(value="(execution(@com.app.aop.annotation.LogFunc**.*(..))&&target(Object)&&this(Object))",argNames="rtv",returning="rtv")切入方法中打印函数返回结果rtv。
c.对于类中定义的属性值变化状况AspectJ实现如下
在@Around("set(@com.app.aop.annotation.LogAnyway**)&&
args(newVal)&&target(t)")切入方法中,通过
ProceedingJoinPoint.getSignature)获取FieldSignature;
再通过FieldSignature.getName()获取属性名称;
通过FieldSignature.getField()获取到Field在获取属性新赋予的值并打印
4、在项目中使用自定义注解LogFunc标注需要自动埋点打印Log的位置即可。
例如对变量Log埋点只需@LogFunc标注即可在程序运行时看到Log输出。
对于Activity和Fragment生命周期函数可在程序运行时自动看到Log输出,不需其他标注。
本发明的有益效果为:
1、统一多人开发过程中日志输出格式,提高开发效率和代码解耦;
2、利用AOP切面编程思想实现运行时代码自动插入Log自动埋点,便于阅读和分析Log日志。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
Claims (8)
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生命周期函数执行时间和时长自动打印的方法为:
通过切入点函数表示所有继承自Activity和Fragment的类中前缀带有on的函数方法切入点,在对应的切入点函数中执行记录时间差和统计时长的目标方法,将执行结果按格式打印到日志中。
6.根据权利要求4所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,实现目标函数的执行时长、传入参数和返回结果的自动打印的方法为:
通过切入点函数匹配自定义注解中的函数方法切入点,对所有匹配到的函数方法进行代码注入,通过API获取到该函数方法的参数值,参数值包括目标函数的执行时长、传入参数和返回结果,将执行结果按格式打印到日志中。
7.根据权利要求4所述的Android端基于AOP和AspectJ的日志自动埋点方法,其特征在于,实现类中定义的属性值变化状况的自动打印的方法为:
通过切入点函数匹配自定义注解中的属性切入点,对所有匹配到的属性进行代码注入,通过API获取到该属性值的变化状况,将执行结果按格式打印到日志中。
8.一种Android端基于AOP和AspectJ的日志自动埋点系统,其特征在于,包括:
自动注解单元,用于编写用于日志埋点的自定义注解;
AspectJ编译单元,用于引用面向切面框架的AspectJ编译方式;
切面程序单元,用于编写AspectJ切面程序代码,对需要进行日志埋点的位置定义切入点匹配规则,切入点匹配规则包括多个用通配符或正则表达式表示的连接点,连接点为自定义注解注入的目标入口,在连接点上的相应位置执行自定义注解中的对日志进行自动埋点的动作;
日志输出单元,用于在程序运行时向日志中自动插入埋点,并通过程序自动输出或使用自定义注解标注的方式查看日志输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710130215.9A CN106970789B (zh) | 2017-03-07 | 2017-03-07 | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710130215.9A CN106970789B (zh) | 2017-03-07 | 2017-03-07 | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106970789A true CN106970789A (zh) | 2017-07-21 |
CN106970789B CN106970789B (zh) | 2020-06-16 |
Family
ID=59329058
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710130215.9A Active CN106970789B (zh) | 2017-03-07 | 2017-03-07 | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106970789B (zh) |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943651A (zh) * | 2017-11-22 | 2018-04-20 | 网易(杭州)网络有限公司 | 信息获取方法、介质、装置和计算设备 |
CN108108283A (zh) * | 2017-12-21 | 2018-06-01 | 五八有限公司 | 标签添加方法、装置、计算机可读存储介质及设备 |
CN108228439A (zh) * | 2018-01-04 | 2018-06-29 | 广东睿江云计算股份有限公司 | 一种程序与日志解耦的方法 |
CN108280022A (zh) * | 2018-02-08 | 2018-07-13 | 无线生活(杭州)信息科技有限公司 | 性能监测方法及装置 |
CN108551411A (zh) * | 2018-04-28 | 2018-09-18 | 努比亚技术有限公司 | 数据采集方法、移动终端及计算机可读存储介质 |
CN108804081A (zh) * | 2018-05-04 | 2018-11-13 | 武汉极意网络科技有限公司 | 一种Fragment中控件识别方法及系统 |
CN109240665A (zh) * | 2018-08-24 | 2019-01-18 | 北京北信源信息安全技术有限公司 | 日志记录方法、装置以及电子设备 |
CN109298860A (zh) * | 2018-09-27 | 2019-02-01 | 高新兴科技集团股份有限公司 | 基于Android系统的线程切换方法、装置及计算机存储介质 |
CN109669737A (zh) * | 2018-12-19 | 2019-04-23 | 百度在线网络技术(北京)有限公司 | 应用处理方法、装置、设备和介质 |
CN109766241A (zh) * | 2018-12-29 | 2019-05-17 | 中国银行股份有限公司 | 系统监控方法、装置、计算机设备及计算机可读存储介质 |
CN109857637A (zh) * | 2018-12-25 | 2019-06-07 | 杭州茂财网络技术有限公司 | 一种基于注解的Java语言方法覆盖率和方法输入输出统计方法及装置 |
CN109857489A (zh) * | 2017-11-30 | 2019-06-07 | 阿里巴巴集团控股有限公司 | 基于Android系统的开发系统、解耦方法和装置 |
CN110209386A (zh) * | 2019-05-17 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 数据埋点的设置方法、埋点数据的获取方法及装置 |
CN110489180A (zh) * | 2019-08-07 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种埋点上报方法、装置、介质和电子设备 |
CN110502224A (zh) * | 2019-08-22 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 基于http请求的接口模拟方法、装置和计算机设备 |
CN110737588A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
CN110737589A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
CN111090433A (zh) * | 2019-10-23 | 2020-05-01 | 贝壳技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN111444065A (zh) * | 2020-05-18 | 2020-07-24 | 江苏电力信息技术有限公司 | 一种基于AspectJ的移动端性能指标监控方法 |
CN112346721A (zh) * | 2020-10-23 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于面向切面编程的日志采集方法、装置和电子设备 |
CN112527265A (zh) * | 2019-09-19 | 2021-03-19 | 深圳Tcl数字技术有限公司 | 一种日志自动注入的方法和计算机设备 |
CN113126971A (zh) * | 2021-04-07 | 2021-07-16 | 粒子文化科技集团(杭州)股份有限公司 | 数据埋点的处理方法、装置、系统、电子装置和存储介质 |
CN113721891A (zh) * | 2021-08-18 | 2021-11-30 | 北京沃德博创信息科技有限公司 | 一种自定义元数据与持久化实例映射方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8997081B1 (en) * | 2014-09-18 | 2015-03-31 | Ensighten, Inc. | Analytics for mobile applications |
CN105893016A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 基于mvc架构的日志记录系统及方法 |
CN106294091A (zh) * | 2016-08-11 | 2017-01-04 | 福建富士通信息软件有限公司 | 一种无侵入式日志拦截性能分析方法及系统 |
-
2017
- 2017-03-07 CN CN201710130215.9A patent/CN106970789B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8997081B1 (en) * | 2014-09-18 | 2015-03-31 | Ensighten, Inc. | Analytics for mobile applications |
CN105893016A (zh) * | 2015-12-11 | 2016-08-24 | 乐视网信息技术(北京)股份有限公司 | 基于mvc架构的日志记录系统及方法 |
CN106294091A (zh) * | 2016-08-11 | 2017-01-04 | 福建富士通信息软件有限公司 | 一种无侵入式日志拦截性能分析方法及系统 |
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943651B (zh) * | 2017-11-22 | 2021-01-29 | 网易(杭州)网络有限公司 | 信息获取方法、介质、装置和计算设备 |
CN107943651A (zh) * | 2017-11-22 | 2018-04-20 | 网易(杭州)网络有限公司 | 信息获取方法、介质、装置和计算设备 |
CN109857489A (zh) * | 2017-11-30 | 2019-06-07 | 阿里巴巴集团控股有限公司 | 基于Android系统的开发系统、解耦方法和装置 |
CN108108283A (zh) * | 2017-12-21 | 2018-06-01 | 五八有限公司 | 标签添加方法、装置、计算机可读存储介质及设备 |
CN108228439A (zh) * | 2018-01-04 | 2018-06-29 | 广东睿江云计算股份有限公司 | 一种程序与日志解耦的方法 |
CN108228439B (zh) * | 2018-01-04 | 2021-05-11 | 广东睿江云计算股份有限公司 | 一种程序与日志解耦的方法 |
CN108280022A (zh) * | 2018-02-08 | 2018-07-13 | 无线生活(杭州)信息科技有限公司 | 性能监测方法及装置 |
CN108280022B (zh) * | 2018-02-08 | 2022-04-01 | 无线生活(杭州)信息科技有限公司 | 性能监测方法及装置 |
CN108551411A (zh) * | 2018-04-28 | 2018-09-18 | 努比亚技术有限公司 | 数据采集方法、移动终端及计算机可读存储介质 |
CN108804081A (zh) * | 2018-05-04 | 2018-11-13 | 武汉极意网络科技有限公司 | 一种Fragment中控件识别方法及系统 |
CN109240665A (zh) * | 2018-08-24 | 2019-01-18 | 北京北信源信息安全技术有限公司 | 日志记录方法、装置以及电子设备 |
CN109298860A (zh) * | 2018-09-27 | 2019-02-01 | 高新兴科技集团股份有限公司 | 基于Android系统的线程切换方法、装置及计算机存储介质 |
CN109669737A (zh) * | 2018-12-19 | 2019-04-23 | 百度在线网络技术(北京)有限公司 | 应用处理方法、装置、设备和介质 |
CN109669737B (zh) * | 2018-12-19 | 2023-04-18 | 百度在线网络技术(北京)有限公司 | 应用处理方法、装置、设备和介质 |
CN109857637A (zh) * | 2018-12-25 | 2019-06-07 | 杭州茂财网络技术有限公司 | 一种基于注解的Java语言方法覆盖率和方法输入输出统计方法及装置 |
CN109766241A (zh) * | 2018-12-29 | 2019-05-17 | 中国银行股份有限公司 | 系统监控方法、装置、计算机设备及计算机可读存储介质 |
CN110209386B (zh) * | 2019-05-17 | 2023-07-21 | 北京奇艺世纪科技有限公司 | 数据埋点的设置方法、埋点数据的获取方法及装置 |
CN110209386A (zh) * | 2019-05-17 | 2019-09-06 | 北京奇艺世纪科技有限公司 | 数据埋点的设置方法、埋点数据的获取方法及装置 |
CN110489180A (zh) * | 2019-08-07 | 2019-11-22 | 北京字节跳动网络技术有限公司 | 一种埋点上报方法、装置、介质和电子设备 |
CN110489180B (zh) * | 2019-08-07 | 2023-03-28 | 北京字节跳动网络技术有限公司 | 一种埋点上报方法、装置、介质和电子设备 |
CN110502224A (zh) * | 2019-08-22 | 2019-11-26 | 深圳前海环融联易信息科技服务有限公司 | 基于http请求的接口模拟方法、装置和计算机设备 |
CN110737589A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
CN110737588A (zh) * | 2019-09-10 | 2020-01-31 | 北京字节跳动网络技术有限公司 | 一种自动埋点的方法、装置、介质和电子设备 |
CN112527265A (zh) * | 2019-09-19 | 2021-03-19 | 深圳Tcl数字技术有限公司 | 一种日志自动注入的方法和计算机设备 |
CN111090433A (zh) * | 2019-10-23 | 2020-05-01 | 贝壳技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN111090433B (zh) * | 2019-10-23 | 2023-10-20 | 贝壳技术有限公司 | 一种数据处理的方法、装置和存储介质 |
CN111444065B (zh) * | 2020-05-18 | 2022-03-11 | 江苏电力信息技术有限公司 | 一种基于AspectJ的移动端性能指标监控方法 |
CN111444065A (zh) * | 2020-05-18 | 2020-07-24 | 江苏电力信息技术有限公司 | 一种基于AspectJ的移动端性能指标监控方法 |
CN112346721A (zh) * | 2020-10-23 | 2021-02-09 | 杭州安恒信息技术股份有限公司 | 基于面向切面编程的日志采集方法、装置和电子设备 |
CN113126971A (zh) * | 2021-04-07 | 2021-07-16 | 粒子文化科技集团(杭州)股份有限公司 | 数据埋点的处理方法、装置、系统、电子装置和存储介质 |
CN113721891A (zh) * | 2021-08-18 | 2021-11-30 | 北京沃德博创信息科技有限公司 | 一种自定义元数据与持久化实例映射方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106970789B (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106970789A (zh) | 一种Android端基于AOP和AspectJ的日志自动埋点方法及系统 | |
Yu et al. | Reverse engineering goal models from legacy code | |
Binkley | Source code analysis: A road map | |
EP1749264A2 (en) | An analytical software design system | |
Krishnamurthi et al. | Foundations of incremental aspect model-checking | |
Birnfeld et al. | P4 switch code data flow analysis: Towards stronger verification of forwarding plane software | |
Quante et al. | Dynamic object process graphs | |
Clarke et al. | Software fault trees and weakest preconditions: a comparison and analysis | |
Zhang et al. | Enhancing UML state machines with aspects | |
Delamare et al. | An approach for testing pointcut descriptors in aspectj | |
Spalazzi et al. | Towards model checking security of real time Java software | |
Enderlin et al. | Grammar-based testing using realistic domains in PHP | |
Patrignani et al. | Universal composability is robust compilation | |
Kuter et al. | HACKAR: helpful advice for code knowledge and attack resilience | |
JP2021111389A (ja) | コードスニペットのパース可能性の向上 | |
Idani et al. | Applying Formal Reasoning to Model Transformation: The Meeduse solution. | |
Binalialhag et al. | Static slicing of Use Case Maps requirements models | |
Scherer | Engineering of Reliable and Secure Software via Customizable Integrated Compilation Systems | |
Bernardi et al. | Integrating model driven and model checking to mine design patterns | |
Garavel et al. | State space reduction for process algebra specifications | |
und Bildauswertung et al. | Design and Evaluation of Methods for Efficient Fuzzing of Stateful Software | |
Liang et al. | Monitoring with behavior view diagrams for scenario-driven debugging | |
Idani et al. | TTC’2019: the MEEDUSE solution | |
Johnsen et al. | Validating behavioral component interfaces in rewriting logic | |
Wang et al. | Improving the quality of aspectj application: Translating name-based pointcuts to analysis-based pointcuts |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |