Skip to content

实时日志 ​

背景 ​

为帮助小游戏开发者快捷地排查小游戏漏洞、定位问题,我们推出了实时日志功能。开发者可通过提供的接口打印日志,日志汇聚并实时上报到小游戏后台。开发者可从小游戏管理后台“WE分析->性能质量->实时日志”进入小游戏端日志查询页面,或从“小游戏插件->实时日志”进入插件端日志查询页面,进而查看开发者打印的日志信息。

如何使用 ​

小游戏端 ​

1、调用相关接口。打日志的接口是 sud.getRealtimeLogManager,为了兼容旧的版本,建议使用如下代码封装一下,例如封装在 log.js 文件里面:

javascript
var log = sud.getRealtimeLogManager ? sud.getRealtimeLogManager() : null

module.exports = {
  debug() {
    if (!log) return
    log.debug.apply(log, arguments)
  },
  info() {
    if (!log) return
    log.info.apply(log, arguments)
  },
  warn() {
    if (!log) return
    log.warn.apply(log, arguments)
  },
  error() {
    if (!log) return
    log.error.apply(log, arguments)
  },
  setFilterMsg(msg) { 
    if (!log || !log.setFilterMsg) return
    if (typeof msg !== 'string') return
    log.setFilterMsg(msg)
  },
  addFilterMsg(msg) { 
    if (!log || !log.addFilterMsg) return
    if (typeof msg !== 'string') return
    log.addFilterMsg(msg)
  }
}

2、在页面的具体位置打印日志:

javascript
var log = require('./log.js') // 引用上面的log.js文件
log.info('hellopink test ') // 日志会和当前打开的页面关联,建议在页面的onHide、onShow等生命周期里面打
log.warn('warn')
log.error('error')
log.setFilterMsg('filterkeyword')
log.addFilterMsg('addfilterkeyword')

插件端 ​

为了让日志更具有结构性,以便后续进行更为复杂的分析,因此插件端采用新设计的格式。

1、调用相关接口 sud.getRealtimeLogManager,获取实时日志管理器实例:

javascript
const logManager = sud.getRealtimeLogManager()

2、在需要打日志的逻辑中,获取日志实例:

javascript
// 标签名可以是任意字符串,一个标签名对应一组日志;同样的标签名允许被重复使用,具有相同标签名的日志在后台会被汇总到一个标签下
// 标签可为日志进行分类,因此建议开发者按逻辑来进行标签划分
const logger = logManager.tag('plugin-onUserTapSth')

3、在合适位置打印日志:

javascript
logger.info('key1', 'value1') // 每条日志为一个 key-value 对,key 必须是字符串,value 可以是字符串/数值/对象/数组等可序列化类型
logger.error('key2', {str: 'value2'})
logger.warn('key3', 'value3')
logger.setFilterMsg('filterkeyword') // 和小游戏端接口一致
logger.setFilterMsg('addfilterkeyword') // 和小游戏端接口一致

如何查看日志 ​

登录 OpenPaaS 管理后台,可从“开发-小游戏插件->实时日志”,进入日志查询页面。开发者可通过设置时间、OpenID、页面链接、FilterMsg内容等筛选条件查询指定用户的日志信息(如果是插件上报的实时日志)。

注意事项 ​

由于后台资源限制,“实时日志”使用规则如下:

1、为了方便定位问题,日志是按页面划分的,某一个页面,在一定时间内(最短为5秒,最长为页面从显示到隐藏的时间间隔)打的日志,会聚合成一条日志上报,并且在小游戏管理后台上可以根据页面路径搜索出该条日志。 2、每个小游戏账号每天限制1000万条日志,日志会保留7天,建议遇到问题及时定位。 3、一条日志的上限是5KB,最多包含200次打印日志函数调用(info、warn、error调用都算),所以要谨慎打日志,避免在循环里面调用打日志接口,避免直接重写console.log的方式打日志。 4、意见反馈里面的日志,可根据OpenID搜索日志。 5、setFilterMsg和addFilterMsg 可设置类似日志tag的过滤字段。如需添加多个关键字,建议使用addFilterMsg。例如addFilterMsg('scene1'), addFilterMsg('scene2'),addFilterMsg('scene3'),设置后在 OpenPaaS 管理后台可随机组合三个关键字进行检索,如:“scene1 scene2 scene3”、“scene1 scene2”、 “scene1 scene3” 或 “scene2”等(以空格分隔,故addFilterMsg不能带空格)。以上几种检索方法均可检索到该条日志,检索条件越多越精准。 6、目前为了方便做日志分析,插件端实时日志只支持 key-value 格式。 7、实时日志目前只支持在手机端测试。工具端的接口可以调用,但不会上报到后台。