Last active
May 5, 2019 08:11
-
-
Save finscn/dd9f9feab6394786979ad5b6d277b4fb to your computer and use it in GitHub Desktop.
load the error list of weixin minigame
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 需要设置正确的 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