经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
cocos creator主程入门教程(五)—— 日志系统
来源:cnblogs  作者:五邑隐侠  时间:2019/2/25 9:10:32  对本文有异议

五邑隐侠,本名关健昌,10年游戏生涯,现隐居五邑。本系列文章以TypeScript为介绍语言。

 

这一篇介绍日志系统的设计。一般我们开发一个demo,只会简单的用cocos提供的cc.log打印下日志,方便调试功能。但是要开发一个商业项目,还要考虑怎么收集日志,方便产品上线后定位线上问题。如果线上产品运行出异常时能把当时的上下文日志发到一个文件服务器,有利于分析异常的原因。例如如果有通信数据日志,可以先判断是后端返回数据异常,还是前端逻辑出问题。因此,我会在项目里设计一个统一的日志系统,游戏里所有日志的打印都使用该日志系统进行打印。

首先对日志进行分级

  1. /**
  2. * 日志等级枚举
  3. */
  4. export enum LogLv {
  5. DEBUG = 0,
  6. INFO,
  7. WARN,
  8. ERROR
  9. }

  

调试和内部测试时打开所有等级的日志,上线后只打开info等级以上的日志。

产品上线后,日志需要缓存,在异常发生时进行上报

  1. private static MAX_LEN: number = 5000;
  2. private static CLEAR_COUNT: number = 1000;
  3.  
  4. private static logs: Array<LogInfo> = [];

  

这里设定一个清理的条数,当缓存达到上限,把指定条数的旧日志清理出去。当然也可以使用链表实现的队列或环形buffer缓存,达到上限后只替换一条。

每次调用打印方法时,根据设定的日志等级进行拦截,如果打印等级小于输出等级,不做输出。每个打印都可以添加tag,方便日志排查时根据模块定位问题。

  1. /**
  2. * 收集、打印调试等级的日志
  3. * @param tag
  4. * @param msg
  5. */
  6. public static debug(tag: string, msg: string): void {
  7. if (Logger.level > LogLv.DEBUG) {
  8. return;
  9. }
  10.  
  11. let logMsg = "[DEBUG] [" + tag + "] " + msg;
  12. Logger._addLog(LogLv.DEBUG, logMsg);
  13. cc.log(logMsg);
  14. }

  

日志缓存处理

  1. /**
  2. * 添加缓存日志
  3. * @param level
  4. * @param logMsg
  5. */
  6. private static _addLog(level: LogLv, logMsg: string): void {
  7. if (Logger.logs.length >= Logger.MAX_LEN) {
  8. Logger.logs.splice(0, Logger.CLEAR_COUNT);
  9. }
  10.  
  11. Logger.logs.push({
  12. level: level,
  13. msg: logMsg
  14. });
  15. }

  

对于网页版本,可以实现window.onerror方法,在这里把所有日志连接成字符串上传到日志文件服务器,实现对异常日志的收集上报。

 

日志系统先说到这里,下一篇我们将介绍下怎样做消息分发。

原文链接:http://www.cnblogs.com/niudanshui/p/10421567.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号