realTimeLog.js 1.59 KB
//app.js
// import log from 'utils/realTimeLog'

//ascii 返回长度
function ascLength(codeat){
  let len=1
  if(codeat>0x4000000){
    len=6
  }else if(codeat>0x200000){
    len=5
  }else if(codeat>65536){
    len=4
  }else if(codeat>2048){
    len=3
  }else{
    len=2
  }
  return len
}
//简单计算字节长度
String.getBlength = function (str) {
  for (var i = str.length, n = 0; i--; ) {
    n += ascLength(str.charCodeAt(i));
  }
  return n;
}
//按指定字节截取字符串
String.cutByte = function(str,len,endstr){
  var len = +len
    ,endstr = typeof(endstr) == 'undefined' ? "..." : endstr.toString();
  function n2(a){ var n = a / 2 | 0; return (n > 0 ? n : 1)} //用于二分法查找
  if(!(str+"").length || !len || len<=0){return "";}
  if(this.getBlength(str) <= len){return str;} //整个函数中最耗时的一个判断,欢迎优化
  var lenS = len - this.getBlength(endstr)
    ,_lenS = 0
    , _strl = 0
  while (_strl <= lenS){
    var _lenS1 = n2(lenS -_strl)
    _strl += this.getBlength(str.substr(_lenS,_lenS1))
    _lenS += _lenS1
  }
  return str.substr(0,_lenS-1) + endstr
}
if (wx.getRealtimeLogManager) {
  const logger = wx.getRealtimeLogManager()
  let consoleLog=console.log
  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
      })
      logger.info(String.cutByte(params,5000));
      success()
    })
  }
  console.log=function () {
    consoleLog(...arguments)
    wlog(...arguments);
  }
}