简单实用的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 相关文章推荐
JS获得QQ号码的昵称,头像,生日的简单实例
Dec 04 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
Mar 04 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
jQuery实现平滑滚动的标签分栏切换效果
Aug 28 Javascript
基于gulp合并压缩Seajs模块的方式说明
Jun 14 Javascript
js倒计时显示实例
Dec 11 Javascript
bootstrap confirmation按钮提示组件使用详解
Aug 22 Javascript
原生javascript实现的全屏滚动功能示例
Sep 19 Javascript
使用pkg打包Node.js应用的方法步骤
Oct 19 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 Javascript
js实现鼠标点击页面弹出自定义文字效果
Dec 24 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 google或baidu分页代码
2009/11/26 PHP
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
基于PHP创建Cookie数组的详解
2013/07/03 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
2014/08/19 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
纯JS代码实现隔行变色鼠标移入高亮
2016/11/23 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
微信小程序左右滑动切换页面详解及实例代码
2017/02/28 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
详解Angular.js中$http拦截器的介绍及使用
2017/07/04 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
Python 项目转化为so文件实例
2019/12/23 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
详解Python中的Lock和Rlock
2021/01/26 Python
印度在线购物网站:Paytmmall
2019/07/24 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
寄语十八大感言
2014/02/07 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
食品科学与工程专业毕业生求职信范文
2014/07/21 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
小时代观后感
2015/06/10 职场文书