Skip to content

Instantly share code, notes, and snippets.

@finscn
Last active May 5, 2019 08:11
Show Gist options
  • Save finscn/dd9f9feab6394786979ad5b6d277b4fb to your computer and use it in GitHub Desktop.
Save finscn/dd9f9feab6394786979ad5b6d277b4fb to your computer and use it in GitHub Desktop.
load the error list of weixin minigame
// 需要设置正确的 token
var token = 985700508;
// 开始时间 [年,月,日,时] , 设置为null, 则为今天的整点时刻往前7天.
var startTime = null; // [2019, 4, 28, 14];
// 结束时间 [年,月,日,时] , 设置为null, 则为今天的整点时刻.
var endTime = null; // [2019, 5, 5, 14];
// 关键字 (微信有bug, 不是所有出现在错误信息里的字符串都能被检索)
var errKeyword = "";
// 客户端版本号
var clientVer = "";
// 输出格式. 可选项 'csv', 'json'。 csv便于后续在excel里操作,json便于用js代码做处理
var outputFormat = 'csv';
// 每页显示数据, 最小5, 最大20
var pageSize = 20;
// 加载每页数据的时间间隔
var interval = 200;
///////////////////////////////////////////////
///////////////////////////////////////////////
///////////////////////////////////////////////
var url = "https://mp.weixin.qq.com/wxopen/wxaalarm?action=search_jserr";
var total = 100;
var totalPage = Math.ceil(total / pageSize);
var page = 0;
(function() {
if (!endTime) {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
endTime = [year, month, day, hours];
}
if (!startTime) {
var date = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
startTime = [year, month, day, hours];
}
})();
console.log("start time:", startTime);
console.log("end time:", endTime);
console.log("error keyword:", errKeyword);
console.log("client version:", clientVer);
var start_time = new Date(startTime[0], startTime[1] - 1, startTime[2], startTime[3]);
start_time = Math.round(start_time.getTime() / 1000);
var end_time = new Date(endTime[0], endTime[1] - 1, endTime[2], endTime[3]);
end_time = Math.round(end_time.getTime() / 1000);
var allErrors = [];
var $next = function() {
page++;
if (page > totalPage) {
parseErrorMessages(allErrors);
return;
}
console.log(page + '/' + totalPage);
$.post(url, {
token: token,
start_time: start_time,
end_time: end_time,
errmsg_keyword: errKeyword || null,
client_version: clientVer || null,
lang: 'zh_CN',
f: 'json',
ajax: 1,
type: 1,
random: Math.random(),
start: page,
limit: pageSize,
}, function(data) {
if (typeof data === "string") {
data = JSON.parse(data);
}
if (data.total && data.total !== total) {
total = data.total;
totalPage = Math.ceil(total / pageSize);
console.log("total error:", total);
console.log("total page:", totalPage);
}
allErrors = allErrors.concat(data.results);
setTimeout(function() {
$next();
}, interval);
});
};
$next();
function parseErrorMessages(errors) {
var output = null;
if (!errors) {
return output;
}
console.log("error count:", errors.length);
var json = [];
errors.forEach(function(error) {
var date = new Date(error.time * 1000);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
// var hours = date.getHours();
json.push({
time: year + '-' + month + '-' + day,
client_version: error.client_version,
app_version: error.app_version,
version_error_cnt: error.version_error_cnt,
total_error_cnt: error.total_error_cnt,
error_percent: (error.version_error_cnt / error.total_error_cnt * 100).toFixed(2) + "%",
errmsg: error.errmsg,
});
});
console.table(json);
if (outputFormat === "csv") {
var title = "时间,客户端版本,小程序版本,版本错误次数,总错误次数,次数占比,错误内容";
var csv = [];
csv.push(title);
json.forEach(function(error) {
var time = error.time;
var client_version = error.client_version;
var app_version = error.app_version;
var version_error_cnt = error.version_error_cnt;
var total_error_cnt = error.total_error_cnt;
var error_percent = error.error_percent;
var msg = error.errmsg;
msg = '"' + msg.replace(/\"/mg, '""') + '"';
var row = [time, client_version, app_version, version_error_cnt, total_error_cnt, error_percent, msg];
row = row.join(",");
csv.push(row);
});
output = csv.join("\n");
} else {
output = JSON.stringify(json, null, 2);
}
console.log(output);
return output;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment