美文网首页
无侵入埋点、日志监控方案怎么实现?

无侵入埋点、日志监控方案怎么实现?

作者: zhouluyao | 来源:发表于2020-04-30 15:54 被阅读0次

手写代码埋点的优缺点

代码埋点主要就是通过手写代码的方式来埋点,能很精确的在需要埋点的代码处加上埋点的代码方便调试,并跟踪埋点内容

但存在开发工作量大,并且埋点代码到处都是,后期难以维护等问题。

封装一个专门用于方法交换的类

//封装一个对象方法交换的公共类
+(void)hookClass:(Class)classObject fromSelector:(SEL)fromSelector toSelector:(SEL)toSelector 
//这个方法利用运行时 method_exchangeImplementations 接口将方法的实现进行了交换,原方法调用时就会被 hook 住,从而去执行指定的方法。    

UIViewController生命周期埋点

1、页面进入次数、页面停留时间都需要对 UIViewController 生命周期进行埋点,你可以创建一个 UIViewController 的 Category

2、Category 在 +load() 方法里使用了 SMHook 进行方法替换,在替换的方法里执行需要埋点的方法 [self insertToViewWillAppear]。每个 UIViewController 生命周期到了 ViewWillAppear 时都会去执行 insertToViewWillAppear 方法

3、我们要怎么区别不同的 UIViewController 呢?我一般采取的做法都是,使用 NSStringFromClass([self class]) 方法来取类名。

UIButton点击事件无侵入埋点

1、对于点击事件来说,我们也可以通过运行时方法替换的方式进行无侵入埋点。这里最主要的工作是,找到这个点击事件的方法 sendAction:to:forEvent:,然后在 +load() 方法使用 SMHook 替换成为你定义的方法。

2、在UIButton的分类+load()方法,替换自定义的方法

3、我们需要通过 “action 选择器名 NSStringFromSelector(action)” +“视图类名 NSStringFromClass([target class])”组合成一个唯一的标识,来进行埋点记录。

日志监控

一般的程序调试,用断点就好了,我不推荐你把 NSLog 作为一种调试手段。因为,使用 NSLog 调试,会发生 IO 磁盘操作,当频繁使用 NSLog 时,性能就会变得不好。

iOS10以后如何对NSLog函数进行重定向?

1、新的统一日志系统没有 ASL 那样的接口可以让我们取出全部日志,所以为了兼容新的统一日志系统,你就需要对 NSLog 日志的输出进行重定向。

2、对 NSLog 进行重定向,我们首先想到的就是采用 Hook 的方式。因为 NSLog 本身就是一个 C 函数,而不是 Objective-C 方法,所以我们就可以使用 fishhook 来完成重定向的工作。

3、利用了 fishhook 对方法的符号地址进行了重新绑定,从而只要是 NSLog 的调用就都会转向 redirect_nslog 方法调用。

相关文章

  • 无侵入埋点、日志监控方案怎么实现?

    手写代码埋点的优缺点 代码埋点主要就是通过手写代码的方式来埋点,能很精确的在需要埋点的代码处加上埋点的代码方便调试...

  • 戴铭(iOS开发课)读书笔记:09章节-无侵入埋点

    原文链接:无侵入的埋点方案如何实现? 前言: 原文中介绍了iOS开发常见的埋点方式:代码埋点、可视化埋点和无埋点。...

  • 无侵入埋点方案如何实现

    埋点可以解决两大类问题: 一是了解用户使用App的行为, 二是降低分析线上问题的难度 常见的埋点方式: 代码埋点、...

  • web 埋点

    数据埋点是什么?设置数据埋点的意义?web 埋点实现原理了解一下 前端监控和前端埋点方案设计美团点评前端无痕埋点实践

  • iOS 无侵入埋点方案

    分享一个无侵入埋点方案。 demo地址: https://github.com/AutoJiang/TrackDe...

  • iOS无侵入埋点方案

    在iOS项目开发中,我们要收集用户的行为信息以便对项目进行分析统计,就需要在代码中进行埋点统计。 一、通常的埋点方...

  • iOS 无侵入埋点方案

    使用无侵入埋点方案的好处就是能将埋点代码和业务代码解耦。 然而很多无侵入埋点都是hook系统的方式去,比如一些第三...

  • AOP无痕埋点技术

    使用AOP实现iOS应用内的埋点计数 - 简书 iOS用户行为追踪——无侵入埋点 - CSDN博客 iOS 无埋点...

  • 38 | 热点问题答疑(四)

    关于SMLogger的实现 @梁华建在第9篇文章《无侵入的埋点方案如何实现?》后留言,想要知道SMLogger是如...

  • Javassist实现无侵入埋点

    Apk编译流程 Apk编译流程主要经过以下几步:1、使用javac将java文件编译成class2、使用dex工具...

网友评论

      本文标题:无侵入埋点、日志监控方案怎么实现?

      本文链接:https://www.haomeiwen.com/subject/mfttghtx.html