RealtimeLogManager.info()
日志内容,可以有任意多个。每次调用的参数的总大小不超过5Kb
现在看到超过5Kb就会显示 UserLog:fail Log Size xxxx Exceed.
我在客户端尝试截断,有时灵有时不灵,有些日志上看到了截断后的信息,有些依然是 UserLog:fail Log Size xxxx Exceed.;
1,请求官方在接口上自动截断,尽量显示日志信息;
2,望指教下 5Kb 应该怎么计算才能准确无误?
直接把 console.log 封装了 RealtimeLogManager
if (wx.getRealtimeLogManager) { const logger = wx.getRealtimeLogManager() let consoleLog=console.log function str2ab(str) { var buf = new ArrayBuffer(str.length * 2); // 每个字符占用2个字节 var bufView = new Uint16Array(buf); for (var i = 0, strLen = str.length; i < strLen; i++) { bufView[i] = str.charCodeAt(i); } return buf; } function ab2str(buf) { return String.fromCharCode.apply(null, new Uint16Array(buf)); } function wlog(){ let argumentsX=[...arguments] return new Promise(function (success,fail) { let params="" argumentsX.forEach((val,i)=>{ let str=JSON.stringify(val); if(!str) return; params+=str }) let bs=str2ab(params.substr(0,1024*5)) logger.info(ab2str(bs.slice(0,1024*5)).toString()); success() }) } console.log=function () { consoleLog(...arguments) wlog(...arguments); }} |

1,请求官方在接口上自动截断,尽量显示日志信息;
这个支持下。
这个API 需要发布了小程序才可以使用么 直接预览我这后台没有任何信息
找了另一种截串,依然不是很灵光,时好时坏的,请大家指点
//app.js// import log from 'utils/realTimeLog'//ascii 返回长度functionascLength(codeat){let len=1if(codeat>0x4000000){len=6}elseif(codeat>0x200000){len=5}elseif(codeat>65536){len=4}elseif(codeat>2048){len=3}else{len=2}returnlen}//简单计算字节长度String.getBlength =function(str) {for(vari = str.length, n = 0; i--; ) {n += ascLength(str.charCodeAt(i));}returnn;}//按指定字节截取字符串String.cutByte =function(str,len,endstr){varlen = +len,endstr =typeof(endstr) =='undefined'?"...": endstr.toString();functionn2(a){varn = a / 2 | 0;return(n > 0 ? n : 1)}//用于二分法查找if(!(str+"").length || !len || len<=0){return"";}if(this.getBlength(str) <= len){returnstr;}//整个函数中最耗时的一个判断,欢迎优化varlenS = len -this.getBlength(endstr),_lenS = 0, _strl = 0while(_strl <= lenS){var_lenS1 = n2(lenS -_strl)_strl +=this.getBlength(str.substr(_lenS,_lenS1))_lenS += _lenS1}returnstr.substr(0,_lenS-1) + endstr}if(wx.getRealtimeLogManager) {const logger = wx.getRealtimeLogManager()let consoleLog=console.logfunctionwlog(){let argumentsX=[...arguments]returnnewPromise(function(success,fail) {let params=""argumentsX.forEach((val,i)=>{let str=JSON.stringify(val);if(!str)return;params+=str})logger.info(String.cutByte(params,5000));success()})}console.log=function() {consoleLog(...arguments)wlog(...arguments);}}关注下。日志模块官方正在优化,~