简单实用的js调试logger组件实现代码


Posted in Javascript onNovember 20, 2010

但这两种方式都有它的局限性,alert会有中断,有些时候alert出来的值并不可靠,闭包的时候用alert可能会得到不正确的值。debugger使用起来其实也挺纠结的,只有ie支持。所以最合理的方式是js把运行过程需要调试的值输出到页面,或者写到cookie也可以,这种方式不会有alert中断带来值不正确的问题,也不会受浏览器类型的限制,唯一纠结的是操作起来很麻烦。
于是,有了下面说的这个js组件。这个组件的实现参考了log4net组件的记录方式,我们利用这个js的logger组件,就可以用log的输出的方式来进行你的调试工作了。

/* 
js调试组件 
*/ 
(function () { 
var logger = function (level, object, viewType) { 
this.level = level; 
this.object = object; 
this.viewType = viewType; 
} 
logger.LEVEL_DEBUG = 0; 
logger.LEVEL_INFO = 1; 
logger.LEVEL_WARN = 2; 
logger.LEVEL_ERROR = 3; 
logger.LEVEL_FATAL = 4; 
logger.VIEW_TYPE_ALERT = 0; 
logger.VIEW_TYPE_APPEND = 1; 
logger.prototype = { 
setLevel: function (level) { 
this.level = level; 
}, 
setObject: function (o) { 
if (typeof o == 'string') { 
this.object = document.getElementById(o); 
} else { 
this.object = o; 
} 
}, 
setViewType: function (type) { 
this.viewType = type; 
}, 
log: function (s) { 
this.message(100, s); 
}, 
debug: function (s) { 
this.message(logger.LEVEL_DEBUG, s); 
}, 
info: function (s) { 
this.message(logger.LEVEL_INFO, s); 
}, 
warn: function (s) { 
this.message(logger.LEVEL_WARN, s); 
}, 
error: function (s) { 
this.message(logger.LEVEL_ERROR, s); 
}, 
fatal: function (s) { 
this.message(logger.LEVEL_FATAL, s); 
}, 
message: function (level, s) { 
if (level >= this.level) { 
if (this.object != null) { 
this.object.innerHTML = s; 
} else if (this.viewType == logger.VIEW_TYPE_ALERT) { 
alert(s); 
} else { 
document.body.appendChild(document.createTextNode(s)); 
document.body.appendChild(document.createElement("br")); 
} 
} 
} 
}; 
if (typeof window.Logger == 'undefined' || window.Logger == null) 
window.Logger = new logger(logger.LEVEL_DEBUG, null, logger.VIEW_TYPE_APPEND); 
})();

怎么使用呢?
这个js组件往window对象注册了Logger对象,我们可以用Logger.log/Logger.debug/Logger.info/Logger.warn/Logger.error/Logger.fatal来输出不同的调试信息。
示例代码如下:
Logger.debug(new Date()); 
Logger.debug(new Date().addHours(3));

很简单,再也不用每个地方都写document.getElementId().innerHtml或者alert/debugger来输出内容了。
示例代码中使用的addHours是我扩展js的Date对象方法,想要了解更多的朋友可以查看《扩展js的Date方法》。
Javascript 相关文章推荐
JavaScipt基本教程之前言
Jan 16 Javascript
javascript面向对象的方式实现的弹出层效果代码
Jan 28 Javascript
javascript 自定义回调函数示例代码
Sep 26 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
Jun 14 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
vue计算属性computed的使用方法示例
Mar 13 Javascript
js 计数排序的实现示例(升级版)
Jan 12 Javascript
JS+HTML5本地存储Localstorage实现注册登录及验证功能示例
Feb 10 Javascript
简单了解Vue + ElementUI后台管理模板
Apr 07 Javascript
javascript实现前端成语点击验证优化
Jun 24 Javascript
JS+Canvas实现五子棋游戏
Aug 26 Javascript
Three.js实现雪糕地球的使用示例详解
Jul 07 Javascript
扩展javascript的Date方法实现代码(prototype)
Nov 20 #Javascript
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 #Javascript
AJAX异步从优酷专辑中采集所有视频及信息(JavaScript代码)
Nov 20 #Javascript
javascript来定义类的规范小结
Nov 19 #Javascript
Javascript面象对象成员、共享成员变量实验
Nov 19 #Javascript
js 创建快捷方式的代码(fso)
Nov 19 #Javascript
javascript 函数参数限制说明
Nov 19 #Javascript
You might like
转生史莱姆:萌王第一次撸串开心到飞起,哥布塔撸串却神似界王神
2018/11/30 日漫
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
PHP--用万网的接口实现域名查询功能
2012/12/13 PHP
探讨如何在php168_cms中提取验证码
2013/06/08 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
php表单提交实例讲解
2015/11/12 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
laravel ORM关联关系中的 with和whereHas用法
2019/10/16 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
jQuery 行级解析读取XML文件(附源码)
2009/10/12 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
使用JavaScript动态设置样式实现代码及演示动画
2013/01/25 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
js表头排序实现方法
2015/01/16 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
Python实现发送与接收邮件的方法详解
2018/03/28 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
怎么快速自学python
2020/06/22 Python
通过代码实例了解Python3编程技巧
2020/10/13 Python
python中的测试框架
2020/11/13 Python
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
感恩教师主题班会
2015/08/12 职场文书
小学教师教育随笔
2015/08/14 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
MySQL 字符集 character
2022/05/04 MySQL
python绘制云雨图raincloud plot
2022/08/05 Python