在游戏开发中,调试代码不仅仅要靠断点调试,也需要日志输出帮助调试!此时,我们希望日志能够打赢出各种各样的颜色,来区分不同的错误信息,也需要知道该日子打印的时间和文件的代码行数,以及函数的调用者,等等。
1.获取日志打印时间
_getDateString() { var d = new Date(); var str = d.getHours()+""; var timeStr = ""; timeStr += (str.length==1 ? ("0"+str) : str) + ":"; str = d.getMinutes()+""; timeStr += (str.length==1 ? ("0"+str) : str) + ":"; str = d.getSeconds()+""; timeStr += (str.length==1 ? ("0"+str) : str) + "."; str = d.getMilliseconds()+""; if( str.length==1 ) str = "00"+str; if( str.length==2 ) str = "0"+str; timeStr += str; timeStr = "[" + timeStr + "]"; return timeStr; }
2.获取调用堆栈
_stack(index) { var e = new Error(); var lines = e.stack.split(" "); lines.shift(); var result = []; lines.forEach(function (line) { line = line.substring(7); var lineBreak = line.split(" "); if (lineBreak.length<2) { result.push(lineBreak[0]); } else { result.push({[lineBreak[0]] : lineBreak[1]}); } }); var list = []; if(index <= result.length-1){ for(var a in result[index]){ list.push(a); } } if( list.length > 0 ) { var splitList = list[0].split("."); if( splitList.length >=2 ) { return ("["+splitList[0] + ".js->" + splitList[1] + "]"); } } return ""; }
3. 基本日志输出封装
log(msg?: string){ var backLog = cc.log || console.log || window["log"]; if(!AppLog.OPEN_LOG_FLAG){ return; } backLog.call(this,"%s%s "+cc.js.formatStr.apply(cc,arguments),this._getDateString(),this._stack(2)); }; info(msg?: string) { var backLog = cc.log || console.log || window["log"]; if(!AppLog.OPEN_LOG_FLAG){ return; } backLog.call(this,"%c%s%s "+cc.js.formatStr.apply(cc,arguments),"color:#00CD00;",this._getDateString(),this._stack(2)); }; logS(msg?: string) { var backLog = cc.log || console.log || window["log"]; if(!AppLog.OPEN_LOG_FLAG){ return; } backLog.call(this,"%c%s%s "+cc.js.formatStr.apply(cc,arguments),"color:#0066FF;",this._getDateString(),this._stack(2)); };
4. framework 初始化日志模块。
import AppLog from "./AppLog"; (bb as any) = AppLog.getInstance();
5. 使用日志
bb.log("这是普通日志: hello world"); bb.info("这是重要的日志: hello world"); bb.logS("这是服务器传过来的日志: hello world"); bb.logC("这是发给服务器的日志: hello world"); bb.err("这是错误日志输出:hello world"); bb.warn("这是警告日志:hello wolrd")
源码在哪里?
Reply赞!建议把源码上传git
Reply