引擎: CocosCreator 3.8.0
环境: Mac
Gitee: oops-game-kit
注: 作者
dgflash
的oops-framework框架QQ群: 628575875
Logger
作者dgflash
针对于oops-framework封装的日志管理类是通过Logger
实现的,接口在框架中的定义:
export class oops {/** 日志管理 */static log = Logger;
}
Logger将项目中的日志类型分为了如下几种:
类型(LogType) | 索引 | 颜色 | 说明 |
---|---|---|---|
Net | 1 | 橙色 | 网络日志 |
Model | 2 | 紫色 | 数据日志 |
Business | 4 | 蓝色 | 业务日志 |
View | 8 | 绿色 | 视图日志 |
Config | 16 | 灰色 | 配置日志 |
Trace | 32 | 黑色 | 标准日志 |
主要的接口:
接口 | 说明 |
---|---|
setTags() | 设置显示日志的类型 |
start() | 针对于某段操作开始计时 |
end() | 针对于某段操作结束计时 |
table() | 将数据打印为表格形式 |
trace() | 打印标准日志,默认为黑色 |
logNet() | 打印网络层日志 |
logModel() | 打印数据层日志 |
logBusiness() | 打印业务层日志 |
logView() | 打印视图日志 |
logConfig() | 打印配置日志 |
注: 标准日志支持自定义颜色修改,其他日志打印不支持
简单的使用示例:
oops.log.trace("默认标准日志");
oops.log.logConfig("灰色配置日志");
oops.log.logNet("橙色网络日志");
oops.log.logModel("紫色数据日志");
oops.log.logBusiness("蓝色业务日志");
oops.log.logView("绿色视图日志");
代码解析
关于日志打印, 以网络层日志打印为例:
// 网络日志打印
static logNet(msg: any, describe?: string) {this.orange(LogType.Net, msg, describe);
}// 日志颜色的设定
private static orange(tag: LogType, msg: any, describe?: string) {this.print(tag, msg, "color:#ee7700;", describe)
}/**
* 输出日志
* @param tag 日志类型
* @param msg 日志内容
* @param color 日志文本颜色
* @param describe 日志标题描述
*/
private static print(tag: LogType, msg: any, color: string, describe?: string) {// 标记没有打开,不打印该日志if (!this.isOpen(tag)) {return;}// 获取日志对象前者由JavaScript提供后者由CocosCreator的编译器提供// 后者本质上也是对JavaScript的console的封装var backLog = console.log || log;// 根据标签获取类型名,比如:网络日志等var type = names[tag];// 获取日期let date = this.getDateString();// 获取堆栈的简略信息let stack = this.stack(5);// 文件格式%c用于设定控制台内容的样式if (describe) {backLog.call(null, "%c%s%s%s:%s%o", color, date, '[' + type + ']', stack, describe, msg);} else {backLog.call(null, "%c%s%s%s:%o", color, date, '[' + type + ']', stack, msg);}
}
其他的日志打印与之类似,不再赘述。
在项目使用中,对于不同的日志类型进行分类显示或管理有助于我们通过该框架的使用,提升工作效率。
其他示例
- 设定日志显示的标记
oops.log.setTags(LogType.Config | LogType.Trace);
- 打印代码段的运行时间
let num = 0;
oops.log.start("debug Time:")
while (num < 100000000) {num++;
}
oops.log.end("debug Time:") // debug Time:: 69ms
注意: start()和end()的参数设定一定要保持一致,否则会记录错误
关于oops-framework针对于日志管理,本质上也就是对JavaScript内置对象console
的一次封装。
关于console
的更多内容可参考博客: TypeScript 之 console的使用
最后,再次感谢作者dgflash
的分享,祝大家学习和生活愉快!