简单实用的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 相关文章推荐
一段利用WSH获取登录时间的jscript代码
May 11 Javascript
jquery ajax 检测用户注册时用户名是否存在
Nov 03 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
Nov 30 Javascript
js点击选择文本的方法
Feb 09 Javascript
日常收集整理的JavaScript常用函数方法
Dec 10 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
vue.js中指令Directives详解
Mar 20 Javascript
PHP7新特性简述
Jun 11 Javascript
VUE axios上传图片到七牛的实例代码
Jul 28 Javascript
vue引入axios同源跨域问题
Sep 27 Javascript
JS div匀速移动动画与变速移动动画代码实例
Mar 26 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
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
深入Apache与Nginx的优缺点比较详解
2013/06/17 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
如何将网页表格内容导入excel
2014/02/18 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
jQuery实现在textarea指定位置插入字符或表情的方法
2015/03/11 Javascript
JS实现网页顶部向下滑出的全国城市切换导航效果
2015/08/22 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
2017/06/15 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
Vue动态加载异步组件的方法
2018/11/21 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
js实现适配移动端的拖动效果
2020/01/13 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
Python实现在线暴力破解邮箱账号密码功能示例【测试可用】
2017/09/06 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
pandas DataFrame创建方法的方式
2019/08/02 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
英国在线汽车和面包车零件商店:Car Parts 4 Less
2018/08/15 全球购物
平安校园建设方案
2014/05/02 职场文书
物理学专业自荐信
2014/06/11 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
党委领导班子整改方案
2014/09/30 职场文书
2015年建筑工作总结报告
2015/05/04 职场文书
项目投资意向书范本
2015/05/09 职场文书
小学安全工作总结2015
2015/05/18 职场文书
Pytorch中的数据集划分&正则化方法
2021/05/27 Python