APRemoteLogger.h 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. //
  2. // APRemoteLogger.h
  3. // APRemoteLogging
  4. //
  5. // Created by tashigaofei on 14-6-23.
  6. // Copyright (c) 2014年 Alipay. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. #import <UIKit/UIKit.h>
  10. #import <mach/mach.h>
  11. #import "APMonitorPointDataDefines.h"
  12. #ifdef SDK_IS4_ALIPAY
  13. #import "APLogAddions.h"
  14. #endif
  15. NS_ASSUME_NONNULL_BEGIN
  16. /**
  17. 手动埋点Logger. 包含行为埋点和性能埋点.
  18. 文档: https://lark.alipay.com/wfc/doc/manual-log-ios
  19. */
  20. @interface APRemoteLogger : NSObject
  21. /**
  22. 诊断埋点的上报开关, YES 为关闭埋点,NO 为打开埋点,默认为NO
  23. */
  24. @property (nonatomic, class, assign) BOOL isDisableRemoteLog;
  25. #pragma mark -
  26. #pragma mark Behavior 行为埋点接口
  27. /**
  28. * 行为埋点接口。客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  29. * 对于不需要自定义bizType的业务,推荐使用该接口。
  30. *
  31. * @param actionId action ID 必填,标识一个埋点的类别,可用actionID定义在APMonitorPointDataDefines.h
  32. 文件中
  33. * @param extParams 可选,扩展参数,业务自己根据需要填充。数组元素最多4个,第四个元素可以是字典,
  34. 字典内容可自定义,字典会被转换成key-value的字符串计入日志
  35. * @param appId 可选,子应用ID
  36. * @param seed 可选,埋点ID,现已更名为spm,若有则务必填写。
  37. * @param ucId 可选,用例编号
  38. */
  39. +(void)writeLogWithActionId:(NSString *)actionId
  40. extParams:(nullable NSArray *)extParams
  41. appId:(nullable NSString *)appId
  42. seed:(NSString *)seed
  43. ucId:(nullable NSString *)ucId;
  44. /**
  45. * 行为埋点接口。客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  46. *
  47. * @param actionId action ID 必填,标识一个埋点的类别,可用actionID定义在APMonitorPointDataDefines.h
  48. 文件中
  49. * @param extParams 可选,扩展参数,业务自己根据需要填充。数组元素最多4个,第四个元素可以是字典,
  50. 字典内容可自定义,字典会被转换成key-value的字符串计入日志
  51. * @param appId 可选,子应用ID
  52. * @param seed 可选,埋点ID,现已更名为spm,若有则务必填写。
  53. * @param ucId 可选,用例编号
  54. * @param bizType 可选,业务类型. 默认值为behavior,若传入非空的自定义的bizType,请务必保证已经跟mdap服务端申请了该bizType,否则服务端会丢弃该日志
  55. * 对于不需要自定义formatter的业务,推荐使用该接口。
  56. */
  57. +(void)writeLogWithActionId:(NSString *)actionId
  58. extParams:(nullable NSArray *)extParams
  59. appId:(nullable NSString *)appId
  60. seed:(NSString *)seed
  61. ucId:(nullable NSString *)ucId
  62. bizType:(nullable NSString *)bizType;
  63. /**
  64. * 行为埋点接口。客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  65. *
  66. * @param actionId action ID 必填,标识一个埋点的类别,可用actionID定义在APMonitorPointDataDefines.h
  67. 文件中
  68. * @param extParams 可选,扩展参数,业务自己根据需要填充。数组元素最多4个,第四个元素可以是字典,
  69. 字典内容可自定义,字典会被转换成key-value的字符串计入日志
  70. * @param appId 可选,子应用ID
  71. * @param seed 可选,埋点ID,现已更名为spm,若有则务必填写。
  72. * @param ucId 可选,用例编号
  73. * @param bizType 可选,业务类型. 默认值为behavior,若传入非空的自定义的bizType,请务必保证已经跟mdap服务端申请了该bizType,否则服务端会丢弃该日志
  74. * @param formatterDictionary 可选,业务可以根据需求自定义formatter字典值,内容ID(entityId/SCM)、日志头(header)、页面Id(pageId)、日志级别(logLevel)、ABTest实验信息(abTestInfo)可通过该字段自定义。
  75. */
  76. + (void)writeLogWithActionId:(NSString *)actionId
  77. extParams:(nullable NSArray *)extParams
  78. appId:(nullable NSString *)appId
  79. seed:(NSString *)seed
  80. ucId:(nullable NSString *)ucId
  81. bizType:(nullable NSString *)bizType
  82. formatterDictionary:(nullable NSDictionary *)formatterDictionary;
  83. #pragma mark -
  84. #pragma mark PageMonitor
  85. /**
  86. * PageMonitor 页面打开
  87. * @param spmId 代表当前页面的spm
  88. * @param index pageid索引,通常传入当前VC对象即可,同一个页面的pageStart和pageEnd需要传入同一个对象.
  89. * @return void
  90. *
  91. */
  92. + (void)logPageStartWithSpmId:(NSString *)spmId
  93. index:(NSObject *)index;
  94. /**
  95. * PageMonitor 页面结束,会生成pageMonitor埋点
  96. * @param spmId 代表当前页面的spm
  97. * @param index pageid索引,通常传入当前VC对象即可,同一个页面的pageStart和pageEnd需要传入同一个对象.
  98. * @param param 手动埋点扩展参数4
  99. * @return void
  100. */
  101. + (void)logPageEndWithSpmId:(NSString *)spmId
  102. index:(NSObject *)index
  103. bizType:(nullable NSString *)bizType
  104. param:(nullable NSDictionary *)param;
  105. #pragma mark -
  106. #pragma mark Performance 性能埋点接口
  107. #ifdef SDK_IS4_ALIPAY
  108. /**
  109. * 性能埋点接口,客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  110. *
  111. * @param tpye 类型
  112. * @param subType 子类型,业务可以自己定义
  113. * @param extraParams 扩展字段,共四个item,第四个item是字典,字典内容可自定义,字典会被转换成key-value的字符串计入日志
  114. */
  115. + (void)writePerformanceLogWithType:(APLogType)type
  116. subType:(nullable NSString *)subType
  117. extraParams:(nullable NSArray *)extraParams;
  118. /**
  119. * 埋点接口,客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  120. *
  121. * @param tpye 类型,每种类型对应一个日志文件
  122. * @param subType 子类型,业务可以自己定义,用于过滤筛选用
  123. * @param extraParams 扩展字段,共四个item,第四个item是字典,字典内容可自定义, 字典会被转换成key-value的字符串计入日志
  124. * @param perUploadNum 达到num条日志时,触发一次日志上传,当num==1时,实时上传日志。0表示忽略此参数.
  125. */
  126. + (void)writeWithType:(APLogType)type
  127. subType:(nullable NSString *) subType
  128. paramArray:(nullable NSArray *) extraParams
  129. perUploadNum:(NSUInteger) num;
  130. /**
  131. * 性能埋点接口,客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  132. *
  133. * @param tpye 类型
  134. * @param subType 子类型,业务可以自己定义
  135. * @param extraParams 扩展字段,共四个item,第四个item是字典,字典内容可自定义,字典会被转换成key-value的字符串计入日志
  136. * @param formatterDictionary 业务可以根据需求自定义formatter字典值,格式头可以通过此字典参数设置
  137. * @param perUploadNum达到number条日志时,触发一次日志上传,当number==1时,实时上传日志。0表示忽略此参数.
  138. */
  139. + (void)writePerformanceLogWithType:(APLogType)type
  140. subType:(nullable NSString *)subType
  141. extraParams:(nullable NSArray *)extraParams
  142. formatterDictionary:(nullable NSDictionary *)formatterDictionary
  143. perUploadNum:(NSUInteger)number;
  144. /**
  145. * 性能埋点接口(支持自定义bizType,10.0.12新增)
  146. * 客户端版本、用户ID、设备ID、操作系统版本、网络类型、设备类型、软件版本会自动填充,不需要业务埋点。
  147. * @param bizType 埋点的业务类型,用于日志文件拆分、限流;
  148. * @param subType 埋点子类型,业务可以自己定义
  149. * @param extraParams 扩展字段,共四个item,第四个item是字典,字典内容可自定义,字典会被转换成key-value的字符串计入日志
  150. * @param formatterDictionary 业务可以根据需求自定义formatter字典值,日志头、日志级别可以通过此字典参数设置
  151. * @param perUploadNum达到number条日志时,触发一次日志上传,当number==1时,实时上传日志。0表示忽略此参数.
  152. */
  153. + (void)writePerformanceLogWithBizType:(nullable NSString *)bizType
  154. subType:(nullable NSString *)subType
  155. extraParams:(nullable NSArray *)extraParams
  156. formatterDictionary:(nullable NSDictionary *)dictionary
  157. perUploadNum:(NSUInteger)number;
  158. #endif
  159. @end
  160. NS_ASSUME_NONNULL_END