# 实时日志

# 背景

为帮助小程序开发者快捷地排查小程序漏洞、定位问题,我们推出了实时日志功能。从基础库 1.15.0 开始,开发者可通过提供的接口打印日志,日志汇聚并实时上报到小程序后台。开发者可从小程序管理后台“运维中心->实时日志”进入日志查询页面,查看开发者打印的日志信息。

# 如何使用

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

var log = qq.getRealtimeLogManager ? qq.getRealtimeLogManager() : null;

module.exports = {
  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);
  },
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

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

var log = require("./log.js"); // 引用上面的log.js文件
log.info("hello test hahaha"); // 日志会和当前打开的页面关联,建议在页面的onHide、onShow等生命周期里面打
log.warn("warn");
log.error("error");
log.setFilterMsg("filterkeyword");
log.setFilterMsg("addfilterkeyword");
1
2
3
4
5
6

# 如何查看日志

登录小程序管理后台,从“运维中心->实时日志”进入日志查询页面。开发者可通过设置时间、QQ号/OpenID、页面链接、FilterMsg内容等筛选条件查询指定用户的日志信息。

查询条件

# 注意事项

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

  • 为了定位问题方便,日志是按页面划分的,某一个页面,在onShow到onHide(切换到其它页面、右上角圆点退到后台)之间打的日志,会聚合成一条日志上报,并且在小程序管理后台上可以根据页面路径搜索出该条日志
  • 每个小程序账号每天限制500万条日志,日志会保留7天,建议遇到问题及时定位。
  • 一条日志的上限是5KB,最多包含200次打印日志函数调用(info、warn、error调用都算),所以要谨慎打日志,避免在循环里面调用打日志接口,避免直接重写console.log的方式打日志。
  • 意见反馈里面的日志,可根据OpenID搜索日志。
  • setFilterMsg可以设置过滤的Msg。这个接口的目的是提供某个场景的过滤能力,例如setFilterMsg('scene1'),则在MP上可输入scene1查询得到该条日志。比如上线过程中,某个监控有问题,可以根据FilterMsg过滤这个场景下的具体的用户日志。FilterMsg仅支持大小写字母。如果需要添加多个关键字,建议使用addFilterMsg替代setFilterMsg

日志查询