# 探针API使用进阶
本文将会进一步为你讲解探针构造函数配置、设置插件、如忽略部分JS异常、设置用户id等。
# 1、探针配置
在《快速接入》一文中已经讲到了如何初始化探针,而初始化探针时可通过构造方法传入Object类型的配置参数。本文将深入讲解配置参数。
# 1.1、 探针配置demo
创建探针实例代码示例。
// 1、 构造方法参数设置配置
const __wpk = new wpkReporter({
bid: '应用唯一标识',
rel: '', // 支持函数,需返回最终的版本字符串'
uid: '', // 支持函数,需返回最终的uid字符串
plugins: [], // 可选
spa: false // 如果你的应用是spa,那就大胆的设为true吧,默认false
})
__wpk.install()
// or
// 2、通过api设置配置
__wpk.setConfig({
uid: 'testid',
...
})
# 1.2、配置参数说明
# bid
- 类型:String
- 必填:是
- 默认值:无
- 描述:平台分配的应用唯一标识,在创建应用时自动分配的 <code>应用标识</code> 字段
# rel
- 类型:String,Function
- 必填:否
- 默认值:无
- 注意事项:若设置为Function,则终需要返回一个字符串
- 描述:前端版本号,推荐设置,设置后,可在平台进行版本对比等操作
- 示例代码
new wpkReporter({
bid: '应用唯一标识',
rel: '2.2.1'
})
// or
new wpkReporter({
bid: '应用唯一标识',
rel: function () {
// 自实现rel获取逻辑
return rel
}
})
# uid
- 类型:String,Function
- 必填:否
- 默认值:uuid
- 注意事项:若设置为Function,则终需要返回一个字符串
- 描述:浏览当前页面的用户唯一标识,推荐设置
- 示例代码
new wpkReporter({
bid: '应用唯一标识',
uid: 'useridStr'
})
// or
new wpkReporter({
bid: '应用唯一标识',
uid: function () {
// 自实现uid逻辑
return uid
}
})
# plugins
- 类型:Array (二维数组)
- 必填:否
- 默认值:wpkflowPlugin 或 所有插件
- 注意事项:若未设置此项。使用install() 安装时,默认wpkflowPlugin。使用installAll() 安装时,默认所有插件
- 描述:需要开启的插件
- 示例代码: (更多插件,详见插件配置)
const __wpk = new wpkReporter({
bid: '应用唯一标识',
rel: '', // 支持函数,需返回最终的版本字符串'
uid: '', // 支持函数,需返回最终的uid字符串
plugins: [
[
wpkglobalerrorPlugin,
{
resErr: false,
jsErr: true
}
]
], // 可选
spa: false // 如果你的应用是spa,那就大胆的设为true吧,默认false
})
# sampleRate
- 类型:Number
- 必填:否
- 默认值:1
- 注意事项:0~1之间的任何数字
- 描述:采样率
# spa
- 类型:Boolean
- 必填:否
- 默认值:false
- 描述:是否为单页面应用,针对单页面应用开启此选项后,可更准确地采集PV
# debug
- 类型:Boolean
- 必填:否
- 默认值:false
- 注意事项:生产环境不要开启此项
- 描述:是否开启debug模式,开启后,将会有更详细的打点过程日志输出,一般用于接入时验证
# cluster
- 类型:String
- 必填:否
- 默认值:'cn'
- 注意事项:可选值: 'cn':国内集群;'intl': 国际集群。请注意<code>cluster配置</code>必须与使用平台相匹配
# ignoreScriptError
- 类型:Boolean
- 必填:否
- 默认值:true
- 描述:是否忽略 JS 异常中的 <code>Scrpit error</code> 错误
# beforeSend
- 类型:Function
- 必填:否
- 默认值:无
- 描述:日志上报的前置处理,返回 false可阻止日志上报
- 示例代码
new wpkReporter({
bid: '应用唯一标识',
beforeSend: function(logData) {
// 根据自身业务和数据,判断是否要上报
return true
}
})
# 2、插件化配置及使用
如果你需要一些更深入,更高端的玩法,那么本主题你将会带你走上高玩之路。
# 2.1、接入
我们先忘记之前的快速接入,从0开始来。
# 2.1.1、基础引入和初始化
<!--引入探针核心 -->
<script src="https://g.alicdn.com/woodpeckerx/jssdk??wpkReporter.js" crossorigin="true"></script>
<script>
(function(){
var reporter = new wpkReporter({
bid: '',
rel: '0.0.0', // 支持函数,需返回最终的版本字符串'
uid: 'xxx', // 支持函数,需返回最终的uid字符串
plugins: [],
spa: false // 如果你的应用是spa,那就大胆的设为true吧,默认false
})
reporter.install()
window.__wpk = reporter
})(window)
</script>
此时,我们引入了探针的核心,同时获得了PV打点及主动上报数据的功能(JS异常、资源异常、页面性能啥的都没有了)。
# 2.1.2、尝试添插件
以globalerror插件为例。
<!--引入探针和一个插件 -->
<script src="https://g.alicdn.com/woodpeckerx/jssdk??wpkReporter.js,plugins/globalerror.js" crossorigin="true"></script>
<script>
(function(){
var reporter = new wpkReporter({
bid: '',
rel: '0.0.0', // 支持函数,需返回最终的版本字符串'
uid: 'xxx', // 支持函数,需返回最终的uid字符串
plugins: [
[
wpkglobalerrorPlugin, // 插件名
{ // 配置参数
resErr: true, // 你获得了资源异常监控技能
resErrFilter: function(event) {
// 根据你自身的需求决定是否上报
return true // 返回true,则上报日志,返回false,丢弃日志
},
jsErr: true, //你获得了JS异常监控技能
jsErrFilter: function(event) {
// 根据你自身业务需要进行过滤
return true // 返回true,则上报日志,返回false,丢弃日志
}
}
]
],
spa: false // 如果你的应用是spa,那就大胆的设为true吧,默认false
})
reporter.install()
window.__wpk = reporter
})(window)
</script>
PS:请认真关注 <code>探针引入</code> 及 <code>插件(plugins)</code> 的变化,你就明白了如何增加一个插件了
# 2.2、插件列表
# JS&资源异常插件
- 插件名:wpkglobalerrorPlugin
- 引入路径:plugins/globalerror.js
- 包含功能:JS异常,资源加载异常监控
- 配置参数
{
jsErr: true, // 是否开启js error监控
jsErrSampleRate: 1, // js error采样率,默认为 1
jsErrFilter: fn, // js error过滤回调函数,参数为 error对象,返回 false则不上报
resErr: false, // 是否开启资源加载异常监控
resErrSampleRate: 1, // 资源异常监控采样率,默认为 1
resErrFilter: fn // 资源加载异常过滤的回调函数,参数为 error对象,返回 false则不上报
}
# API监控插件
- 插件名:wpkinterfacePlugin
- 引入路径:plugins/interface.js
- 包含功能:API监控 (只支持基于 XMLHttpRequest 和 Fetch)
- 配置参数
{
enable: true, // 默认为 true,可设为false关闭插件功能
sampleRate: 1, // 采样率,默认为 1
withBody: false, // 是否上报请求的body参数,可能涉及敏感信息,故默认 false
withResp: false, // 上报日志是否包含api返回数据,可能涉及敏感信息,故默认 false
errorFilter: function(params) {
/* params 格式
{
url: '', // api url,
status: 200, // http status
response: '' // API请求的body内容
// 详细可参考
// https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/response
// https://developer.mozilla.org/zh-CN/docs/Web/API/Response
}
*/
// 返回值可以是 false 或者 Object 对象。返回false 则此次api数据直接丢弃
return customParams
}
}
- errorFilter 返回数据
若需要在此时对API上报数据进行自定义或阻止符合特定条件的数据上报时,customParams的定义就非常有用且重要,返回参数如下。
// customParams 可选如下
false // 阻止本次数据上报
// or Object
{
bizCode: 404, // 对标http status。当你的接口 http status都是 200,通过内部错误码标识时,可设置次值
msg: 'err' // api错误信息。若要上报此字段。配置参数中withResp必须设置为true,
}
# 性能监控插件
- 插件名:wpkperformancePlugin
- 引入路径:plugins/performance.js
- 包含功能:页面性能监控
- 配置参数
{
enable: true, // 默认为 true,可设为false关闭上报
sampleRate: 1 // 采样率,默认 100%
}