业务数据怎么查,我用云开发高级日志服务-绍兴微信小程序公众号直播商城开发
小程序·云开发作为小程序原生的后台开发能力,一直致力于可以更高效地帮助开发者构建性能更好的小程序。而云函数作为云开发的一项基础能力,承载着小程序所有的后台运算逻辑,它就像小程序的大脑一样,每天繁忙地工作着。
而对于开发者而言,如何尽快地定位和排查云函数使用过程中的问题,也成为保障小程序质量的必备功能。而有一部分开发者并不担心这个问题,因为他们选择了一种能力,只要通过简单的开启就可以高效且准确地定位到云函数中的问题。
这就是云开发提供的高级日志服务。那什么是高级日志服务,它又能做什么呢?接下来就让我们一探究竟。
什么是高级日志服务
很多开发者可能都会遇到这样一些问题:
线上的小程序运行地好好的突然出问题了,怎么知道是哪里有异常呢?
根据线上表现大概猜到是哪个功能模块出现了异常,但是不知道上下文调用信息,要如何准确定位问题?
我不知道具体的请求 ID 是什么,但是隐约记得一些关键字,这要怎么查询日志信息啊?我想自定义一些信息打印到日志中,该怎么办?
高级日志服务能做什么
让我们通过前端开发小 H 的故事来看看,高级日志服务到底能够做什么。
1. 旧框架下的日志服务
subscribe
,并在通过该云函数将用户订阅的消息信息存储到小程序·云开发的数据库中。exports.main = async (event, context) => {
const log = cloud.logger();
try {
const { OPENID } = cloud.getWXContext();
// 在数据库中记录用户的订阅信息
const result = await db.collection('messages').add({
data: {
touser: OPENID, // 用户的openid
page: 'index', // 订阅消息的页面路径
templateId: event.templateId, // 订阅消息模板ID
},
});
log.info({
action: 'addMessage',
touser: OPENID,
templateId: event.templateId,
});
return result;
} catch (err) {
log.error({
type: err.name,
message: err.message,
});
return err;
}
}
但是原生的日志中能够写入的数据是非常有限的。而且检索日志的时候只能通过开始时间、结束时间、状态和 requestID
进行检索。可是基于业务需求小 H 需要在 subscribe
云函数调用的时候需要再打入一些自定义的信息,而且他希望可以对日志按照 log
/ info
/warn
/ error
进行分级,这样在日志查询的时候也可以快速定位到自己想要关注的日志,这该怎么办呢?
2. 高级日志服务
首先,小 H 在定义 subscribe
函数的时候可以使用 wx-server-sdk
(1.5.0 或以上版本)提供的方法打入一些自定义的日志内容。具体流程为:
通过 logger()
方法取得log
对象调用 log
对象上的log
/info
/warn
/error
(对应不同 level 的日志等级)方法,传入一个对象作为参数对象的每一个 <key, value>
对都会成为日志一条记录中的一个可检索的键值对,其中value
不论值是什么都会被转成字符串
subscribe
变成了下面这样:exports.main = async (event, context) => {
const log = cloud.logger();
try {
const { OPENID } = cloud.getWXContext();
// 在数据库中记录用户的订阅信息
const result = await db.collection('messages').add({
data: {
touser: OPENID, // 用户的openid
page: 'index', // 订阅消息的页面路径
templateId: event.templateId, // 订阅消息模板ID
},
});
log.info({
action: 'addMessage',
touser: OPENID,
templateId: event.templateId,
});
return result;
} catch (err) {
log.error({
type: err.name,
message: err.message,
});
return err;
}
}
此时,当这个 subscribe
被触发以后,我们就能在高级日志服务中看到这样一条日志记录:
{ "level": "info", "function": "<function_name>", // 执行的云函数名 "requestId": "<request_id>", // Request ID "action": "addMessage", "touser": "<openid>", "templateId": "<template_id>", "src": "app" // logger 打的日志为 app,系统打的日志为 system}
高级日志不仅提供了全文检索能力,还提供了通过键值检索约束查询范围,让日志的检索变得更加的简单和快捷。
比如,小 H 想知道 subscribe
函数的日志,就可以通过:
全文检索:在搜索框中输入
subscribe
键值检索:在搜索框中输入 function:subscribe
比如,小 H 想知道 subscribe
函数且 OPENID 为 popo
的日志,就可以通过:
在搜索框中输入 function:subscribe and touser:popo
又如,小 H 想知道 level 为 error
且错误信息中含有单词 defined
或以 mem
打头的单词的日志,就可以通过:
在搜索框中输入
function:subscribe and level:error and (message:defined or message:mem*)
除了新增的高级日志外,近期小程序·云开发还更新了——
小程序·云开发能力更新
为帮助企业、政府、媒体及其他组织的小程序开发者在新冠肺炎疫情期间共度难关,小程序·云开发推出特殊类型代金券帮助大家以更低地资源成本完成小程序的功能迭代。
详情可参考文档《小程序·云开发特殊代金券》
数据库安全规则:提供精细化的控制集合中所有记录的读、写权限的能力,自动拒绝不符合安全规则的前端数据库请求,保障数据安全
自定义告警:提供更加灵活的告警配置,可以使用告警指标、统计周期、比较条件、持续周期、告警频率等参数自由组合告警条件。如:统计周期 [5 分钟],当 云函数错误次数 [5 次] 且持续 [1] 个周期时告警,[每小时] 告警一次
数据库事务:可以方便开发者更加灵活地使用数据库能力,满足跨多个记录或跨多集合的原子操作的使用诉求,极大地方便了小程序的功能开发
推荐
-
-
QQ空间
-
新浪微博
-
人人网
-
豆瓣